Wenn der Vorrang des & & ist größer als die von || sollte nicht dieser Code auswerten --b & & C++ zuerst, und somit sollte die Ausgabe sein 1 2 4 11. Aber hier ist es scheint kurzgeschlossen zu sein, um 1 2 5 10 zu geben. Bitte helfen!Reihenfolge der Auswertung von || und && in c
int x;
int a=1,b=5,c=10;
x=a++||--b&&++c;
printf("%d %d %d %d\n",x,a,b,c);
return 0;
Woher wissen wir, wann die Klammern gesetzt werden müssen und wann nicht? – Ashwyn
@Ashwyn eine gute Regel von Thum ist, Klammern überall dort zu setzen, wo die Absicht nicht klar ist. In diesem Fall ist es keine Frage von Klammern, IMO, es ist ziemlich klar, was passiert. –
@Ashwyn Ich denke, du verpasst den Punkt. Sie haben Recht damit, dass && enger ist als ||.Aber der Ausdruck bewertet immer noch von links nach rechts. –