2016-10-11 4 views
-5

Der folgende Code:C-Programmierung und Mehrwert

int z=10,y=5; 
z=z&&!y; 
printf("%d\n",z); 

Ausgänge 0. Kann mir jemand erklären, wie das Ergebnis 0 ist?

+7

Welches andere Ergebnis erwarten Sie? und warum? –

+0

Nur ein Kommentar, dass es oft besser ist,() Klammern und Abstände in Ihren mathematischen Ausdrücken zu verwenden, es wird es viel einfacher zu lesen machen. Auf diese Weise ist auch der Vorrang von Operatoren klar. Beispiel: Wenn Sie z = z schreiben & & (!y); wird die Absicht des Ausdrucks viel klarer – mdewit

Antwort

3

Der logische NOT-Operator ergibt 0, wenn der Operand nicht Null ist und 1, wenn der Operand 0 ist. Da y 5 ist, ist !y0. Logische UND-Operator Ausbeuten 0 oder 1.

So wird der gesamte Ausdruck z && !y;0 (die z zugeordnet und 0 gedruckt wird).

2

Die && ist eine boolesche Operation. In diesem Zusammenhang bedeutet 0 false und Werte ungleich Null bedeuten true. Aus diesem Grund z&&!y wertet 0, und daher ist 0 z zugeordnet.

2

Es ist einfach z = 10 AND NOT (5)

10 ist größer als 0, so dass es den Wert true ergibt. Nicht 5 wird 0, dann 1 UND 0 wird 0!