Короткое замыкание И в случае оператора увеличения / уменьшения

В приведенном ниже коде:

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

я ожидал, что результат будет:

а = 0, Ь = 1, с = 1, D = 0

потому что из-за короткого замыкания в строке ниже, т.е. a-- возвращает 0, так что другая часть не будет выполнена правильно?

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

Выход:

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

кто-нибудь может объяснить, пожалуйста?

Ответы на вопрос(6)

Ваш ответ на вопрос