Skrót ORA w przypadku operatora przyrost / dekrementacja

W poniższym kodzie:

#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;
}

spodziewałem się, że wynik będzie:

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

ponieważ z powodu zwarcia w linii poniżej, tj. a-- zwraca 0, więc druga część nie zostanie wykonana prawidłowo?

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

Dane wyjściowe to:

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

czy ktoś może wyjaśnić?

questionAnswers(6)

yourAnswerToTheQuestion