看到这么一道面试题
#include <stdio.h>
void main()
{
int a=1,b=0,c=-1,d=0;
d=++a||++b&&++c;
printf("d=%d", d); //output 1;
return;
}
我不理解为什么 d 会变成 1 而不是 2 。我知道所谓“短路”,但是无论如何,最左边 d=++a 这个表达式都会被 evaluate 啊。
#include <stdio.h>
void main()
{
int a=1,b=0,c=-1,d=0;
d=++a;
printf("d=%d", d); //output 2
return;
}
这个结果就得 2 。
为什么呢?