主题:[原创]谁能帮我解释一下,运行结果是怎么出来的?
kongleung
[专家分:0] 发布于 2010-06-23 21:19:00
main()
{
int x,y,z,t;
x=y=z=t=1;
t=++x||++y&&++z;
printf("%d,%d,%d,%d",x,y,z,t);
}
运行结果:2,1,1,1
主要是x,y,z最后对应的值为2,1,1 不太明白怎么得来的?
最后更新于:2010-06-23 21:24:00
回复列表 (共3个回复)
沙发
alweeq86 [专家分:1170] 发布于 2010-06-23 22:45:00
t=++x||++y&&++z;
||或运算 如果前面是TRUE 这个表达式的结果肯定是TRUE ,||后面就不会运算;只有当||前面的结果是
FAULSE时才会运算||后面的表达式
同样&& 与运算 如果&&前面的运算结果是FAULSE 表达式的结果肯定是FAULSE &&后面就不会运算
板凳
alweeq86 [专家分:1170] 发布于 2010-06-23 22:57:00
&&的优先级比||高
t=++x||++y&&++z;
就是t=++x||(++y&&++z);
因为++x为1即true 故++y&&++z表达式就不运算了 直接得出++x||++y&&++z结果为true
3 楼
moke9 [专家分:30] 发布于 2010-09-02 07:38:00
你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
我来回复