2016-10-19 10 views
-4

私は学校で課題のためのCコードを書いていて、本当に私を困らせるエラーを見つけました。以下は、問題を引き起こしていたコードスニペットです。Cの<と<<の違いは何ですか?

int i, result = 1; 
for(i = 0; i < n; i++) 
{ 
    if(a[i]<< 15 || a[i] >> 50) 
     result = 0; 
} 

私のプログラムを実行しようとするたびに、私のデータ型には50が大きすぎるという警告が表示されます。私がint型を使用していたことを知り、number 50をintに簡単に格納できるのは、intが32バイト型であるため、32未満の値を期待していると仮定しました。私は50の代わりに20番の数字を使ってみましたが、エラーはありませんでした。私は二重の "<"と ">"マークをシングルに置き換え、コードは完全に機能しました。なぜ誰かがこの事件の理由を明らかにすることができるかどうか疑問に思っていましたか?私はCを新しくしただけで、暗闇の中で余分な "<"と ">"記号が問題だったが、それがうまくいった理由を知りたい。

+1

実際の質問は、なぜあなたは>>または<<と最初に比較しようとしますか?しかし、Cの中の演算子を任意の本やチュートリアルで探し、何が2番目に何をするかを見ることができます。 –

答えて

0

">"と "<"は、 ">>"と "< <"がビット演算子である関係演算子です。

0

リレーショナルCで事業者:!

==、>、<、> =、< =、=

ビット単位のCで演算子:

&、〜 、^ < < >> >>詳細な情報については

:所定のプログラムで Relational operators in C Bitwise operators in C

、[I] < < 15 [i]はバイナリ値を左シフトし、similiarly [I] >> 50は、50を行いますa [i]のバイナリ値の右シフト。

>>と< <は、関係演算子ではないビット演算子です。

希望すると助かります!

関連する問題