回 帖 发 新 帖 刷新版面

主题:[原创]谁能帮我解释一下,运行结果是怎么出来的?

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 不太明白怎么得来的?

回复列表 (共3个回复)

沙发

t=++x||++y&&++z;
||或运算 如果前面是TRUE 这个表达式的结果肯定是TRUE ,||后面就不会运算;只有当||前面的结果是
FAULSE时才会运算||后面的表达式

同样&& 与运算  如果&&前面的运算结果是FAULSE 表达式的结果肯定是FAULSE &&后面就不会运算

板凳

&&的优先级比||高
t=++x||++y&&++z;
就是t=++x||(++y&&++z);
因为++x为1即true 故++y&&++z表达式就不运算了 直接得出++x||++y&&++z结果为true

3 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册