Ich habe ein Problem in C.Operator Vorrang und ternäre Operator
#include<stdio.h>
int main()
{
int a = 10, b = 0, c = 7;
if (a ? b : c == 0)
printf("1");
else if (c = c || a && b)
printf("2");
return 0;
}
Dieser Code druckt 2, aber ich denke, ein b: c kehrt b = 0 und 0 == 0 ergibt 1. Können Sie das erklären Code?
Warum suchen Sie nicht einfach die Vorrang-Tabelle für den Operator? Solche Fragen sind sonst nutzlos. –
Wenn Sie wissen, dass es Vorrang hat, warum verwenden Sie nicht die [Rangordnung] (http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence), um herauszufinden, wo Klammern gesetzt werden sollen? –