2017-12-20 9 views
-2

ausgewertet werden Ich fand diese Frage in vielen Interviews und mein Lehrer fragte mich das gleiche der Hauptbezweifel war, dass, wenn ich <stdbool.h> in C99-Standard aufnehmen wird dies als (true)<c oder (false)>c bewerten. Brauchen Sie eine klarere Antwort als die verknüpfte Post ->Usage of greater than, less than operators.Wie "a <b<c" or "a> b> c" in C

Wie a<b<c oder a>b>c sind in C
zum Beispiel in dem folgenden Code ausgewertet.

# include<stdbool.h> 
int main(void){ 
    int a = 1,b=2,c=3; 
    if(a<b<c) 
     printf("a great b great c"); 
    } 

danke im voraus.

+0

Ich nehme an, dass Sie in seinem mathematischen Sinn bewerten möchten: b ist zwischen a und c. Dies funktioniert nicht, da unabhängig von der Ausführungsreihenfolge das Ergebnis des ersten Teilausdrucks 0 oder 1 ist, abhängig davon, was korrekt ist. Der zweite Vergleich wird dann mit diesem Ergebnis verglichen. –

+1

Mögliches Duplikat von [Verwendung von größer als, weniger als Operatoren] (https://stackoverflow.com/questions/6961643/usage-of-greater-than-less-than-operators) –

+0

@BoPersson können Sie das gleiche wie beantworten Ich habe erwähnt, was ich eigentlich suche, niemand erwähnte dasselbe in der Antwort. –

Antwort

7

Von Standard itself (Relationale Operatoren Fußnoten)

Der Ausdruck a<b<c ist nicht wie bei der gewöhnlichen Mathematik interpretiert. Wie die Syntax angibt, bedeutet dies (a<b)<c; mit anderen Worten, wenn a weniger als b ist, vergleichen Sie 1 zu c; Ansonsten vergleichen Sie 0 mit c.

+0

Also was ist '1

+0

@OptimusPrime .: Nein es ist Vergleich der Ganzzahl 1 mit dem Wert von 'c'. – coderredoc

+0

okay danke viel :) wird bald akzeptieren –

0

Operatorassoziativität diktiert, dass a<b<c zu (a<b)<c entspricht (im Gegensatz zu a<(b<c) gegen).

Wenn a weniger als b ist, wird a<b zu 1 ausgewertet. Ansonsten 0.

Wenn der zurückgegebene Wert von a<b (1 oder 0) kleiner als c wertet das Ganze zu 1. Ansonsten 0.


Vom spec

Jeder der Betreiber < (weniger als), > (größer als), <= (kleiner oder gleich) und >= (größer oder gleich) soll 1 ergeben, wenn die angegebene Relation wahr ist, und 0, wenn sie falsch ist. Das Ergebnis hat den Typ int.

Verwandte Themen