Kurzschluss von UND bei Inkrement / Dekrement-Operator

Im Code unten:

#include <stdio.h>

int main()
{
     int a = 1;
     int b = 1;
     int c = a || --b;
     int d = a-- && --b;
     printf("a = %d, b = %d, c = %d, d = %d", a, b, c, d);
     return 0;
}

Ich hatte erwartet, dass die Ausgabe sein würde:

a = 0, b = 1, c = 1, d = 0

weil aufgrund eines Kurzschlusses in der Zeile unten, dh a-- gibt 0 zurück, so dass der andere Teil nicht richtig ausgeführt wird?

int d = a-- && --b;

Die Ausgabe ist:

a = 0, b = 0, c = 1, d = 0

Kann jemand bitte erklären?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage