a=0,b=0,c=0;a++&&b++||c++; 结果为什么是a=1,b=0,c=1;
本帖最后由 wz0526z 于 2018-3-6 12:42 编辑# include <stdio.h>
int main(void)
{int a,b,c;
a=0,b=0,c=0;
a++&&b++||c++;
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0;
}
结果为什么是a=1,b=0,c=1; 关键在这一句
a++&&b++||c++;
等价于
(a++&&b++) || c++;
执行时,先a&b,此时a为0,并执行a++
由于逻辑短路,作为为假,所以不管右侧,所以a为1,b为0
然后执行或的右侧c++,c自增1,变为1 BngThea 发表于 2018-3-6 12:44
关键在这一句
a++&&b++||c++;
等价于
a++不是先a赋值吗?怎么最后会为1? 执行&&之后已经a已自增1了 SHARK_8 发表于 2018-3-7 22:46
执行&&之后已经a已自增1了
谢谢,已经明白了! wz0526z 发表于 2018-3-7 22:35
a++不是先a赋值吗?怎么最后会为1?
后置++是先拿出值来处理,最后自增
页:
[1]