看到这么一道面试题
#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 。
为什么呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.