2016-10-19 7 views
-4

Ich schrieb einen C-Code für eine Aufgabe in der Schule und stieß auf einen Fehler, der mich wirklich überhäufte. Unten ist das Code-Snippet, das Probleme verursacht hat.Was ist der Unterschied zwischen <und << in C?

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

Jedes Mal, wenn ich versuchte, mein Programm zu laufen, würde ich eine Warnung, dass 50 für meinen Datentyp zu groß war. Da ich weiß, dass ich einen int-Typ verwende und die Zahl 50 leicht in einem int gespeichert werden kann, ging ich davon aus, dass ein Wert unter 32 erwartet wurde, da int ein 32-Byte-Typ ist. Ich habe versucht, die Nummer 20 anstelle von 50 und habe keine Fehler. Ich habe dann die doppelten "<" und ">" Marken durch Singles ersetzt und der Code hat perfekt funktioniert. Ich habe mich gefragt, ob irgendjemand etwas darüber sagen könnte, warum das der Fall war? Ich bin neu in C und habe gerade im Dunkeln geschossen, dass die zusätzlichen "<" und ">" Symbole das Problem waren, aber ich würde gerne wissen, warum es funktioniert hat!

+1

Die eigentliche Frage ist, warum sollten Sie versuchen, mit >> oder << zu vergleichen. Aber Sie können Operatoren in C in jedem Buch oder Tutorial nachschlagen und sehen, was sie in einer Sekunde tun. –

Antwort

0

">" und "<" sind relationale Operatoren, wobei ">>" und "< <" bitweise Operatoren sind.

0

Relational Operatoren in C:

==>, <,> =, < = =

Bitwise Operatoren in C:

&, ~ , < <, >>, |

Ausführliche Informationen: Relational operators in C Bitwise operators in C

Im gegebenen Programm, a [i] < < 15 den Binärwert links verschieben a [i] und similiarly a [i] >> 50 werden 50 tun Rechtsverschiebung des binären Wertes von a [i].

Wie oben beschrieben, sind >> und < < bitweise Operatoren keine relationalen Operatoren.

Hoffe es hilft !!

Verwandte Themen