在下面的代码中:
#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;
}
我期望输出是:
a=0,b=1,c=1,d=0
因为由于下面一行中的短路,即 a-- 返回 0 所以另一部分不会被执行,对吗?
int d = a-- && --b;
输出是:
a = 0, b = 0, c = 1, d = 0
谁能解释一下?