标题:新手问:逻辑运算短路问题,前辈们指点!
只看楼主
ahwei
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-5-19
 问题点数:0 回复次数:5 
新手问:逻辑运算短路问题,前辈们指点!
#include <stdio.h>
void main()
{
int x,y,z;
x=y=z=1;
++x||++y&&++z;
printf("x=%d,y=%d,z=%");
}

输出结果是:x=2,y=1,z=1
我在书上看的:a&&b<c,如果a的值为0,系统便确定表达式的运算结果总是0,忽略表达式b<c的值,如果a的值为1,这时要计算b<c的值
a||b<c,如果a的值为1,系统便确定表达式的运算结果总是1,忽略表达式b<c的值,如果a的职位0,这是要计算b<c的值
那么以上表达式中:++x||++y&&++z
++x的值是2,表达式可看作是1&&++z,也就是说现在a的值为真值,要计算后便++z的值阿,输出结果应为x=2,y=1,z=2吧?

搜索更多相关主题的帖子: 逻辑运算 前辈 短路 
2007-06-13 01:33
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
++x||++y && ++z;
由于&&的优先级比||高,所以++x||++y && ++z;相当于++x|| (++y && ++z) ;
结果可想而知了.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-06-13 01:45
alei21
Rank: 1
来 自:陕西
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-7-20
得分:0 
回复 2# 的帖子
&&的优先级高,就应该先运算(++y && ++z),可为什么先做的是++x??

用时间干掉一切!
2008-11-18 17:52
alei21
Rank: 1
来 自:陕西
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-7-20
得分:0 
请求指点!谢谢了!

用时间干掉一切!
2008-11-21 18:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-146944-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.826735 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved