永发信息网

int x,y,z; x=y=z=0; ++x||++y&&++zz; printf("x=%d y=%d z=%d",x,y,z); 结果为什么是 x=1 y=0

答案:5  悬赏:30  手机版
解决时间 2021-02-15 20:14
好像是“++x||++y&&++zz”,只作“++x”,老师称“stop规则”,
我不懂,这是什么规则?
怎么解释为什么“++x||++y&&++zz”,只作“++x”?
说清楚点。

“从左向右执行
1.++x 导致x=1
2. 1||任何表达式,都不用计算了所以 ++y和++z都没有执行”
这个解释的第二步,我不懂,为什么'1||任何表达式,都不用计算了'?
最佳答案
++x||++y&&++zz;
这种运算叫做short-circuit evaluation
首先你看 ++x=1
所以++x || (any expression) "一定"等於 1
因为1 || 0=1 且1 || 1 =1
所以呢
确定++x=1之後 後面的expression就不会做了
所++y跟++z就没有被执行到
全部回答
表达式从左往右执行,这种逻辑或操作,只要有条件满足了,不管后面是条件是否满足,整个表达式的值都是“真”。数学知识。 x=0,++x后x=1,条件满足,后面不会在执行了,C语法特性,编译器特性
假如 a||b||c 或运算就是 假如这三个表达式只要有一个为真结果就为真, 如果a为真,整个表达式就为真,它肯定不会去算后面的表达式c和b 了, 所以你的程序中,++x||++y&&++z ++x就是1了,C规定非0即为真,整个表达式就为真了,后面的肯定就不算了啊,
当程序执行逻辑“或”即“||“时,从左到右只要遇到第一个逻辑上非零的数,该语句的值也就可以确定为1,所以在C语言中后面的语句默认不需要执行。执行逻辑“与”即“&&”时,则是遇到第一个逻辑上的值为零的数则后面的语句不必执行。这个现象叫做逻辑运算符的短路现象。
因为你让 z = (x==1) && (y=2) 也就是当 x==1 时 对y赋值 同时z=真即为1 可是x!=1 也就是x==1 为假 后面的就不在执行 所以 y仍为0 你想让y=2 可以改写成 z = (x==1) || (y=2) 就好了 此时 z=1 y=2
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
襄城区襄樊刘华诊所我想知道这个在什么地方
施华蔻染发摩丝里面的 显色敷用乳变成水了还
淄博市城镇职工医保住院报销问题 一年住院两
安庆春节期间有黄梅戏演出吗
求exo小说大虐特虐虐心
理想家居在什么地方啊,我要过去处理事情
想买诺优能,但不知道诺优能奶粉有几个版本,
磁钟村总支委员会地址有知道的么?有点事想过
脖子上长了很多扁平疣怎么办
Discuz 用户登录提示“登录失败,您还可以尝
睢县商丘中国移动动感地带(建设路B类合作营业
【一杯牛奶】一杯牛奶的故事
lcm bonding&lam什么意思
东经和西经的分界线是A.180°经线B.20°W经线
邵东市邵阳食味缘早餐馆地址在哪,我要去那里
推荐资讯
关于户口迁移到上海的问题。。。。。。。。。
八字堡怎么去啊,有知道地址的么
2012年山西大同大学学位证数计学院可能拿不到
福迪汽车郏县专营店地址在什么地方,我要处理
例假来之前总是会觉得头晕
当阳市宜昌多喜爱(南正街)怎么去啊,谁知道地
【孟什维克】...建立了工兵代表苏维埃B.革命
美宜佳NO.A239在什么地方啊,我要过去处理事
道外区哈尔滨中国工商银行ATM地址是什么,有
采购部工作总结需要哪些数据分析
某酒店客房有三人间和双人间两种,三人间为150
联想UC30声卡录音文件保存在哪个目录?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?