| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 272 人关注过本帖
标题:关于逻辑函数与顺序的 问题
只看楼主 加入收藏
qq819073730
Rank: 2
等 级:论坛游民
帖 子:50
专家分:10
注 册:2013-1-6
结帖率:90%
收藏
已结贴  问题点数:10 回复次数:6 
关于逻辑函数与顺序的 问题
int x = 2,y = 2,z = 0,a;
a = ++x || ++ y && z++;
printf("%d,%d,%d\n",x,y,z);
执行后的输出结果为:
a: 2,2,0
b:3,3,1
c:3,2,0
d:3,2,1
答案为C
求教教。。我很不明白为什么y,z的值不变 我之前看过有人回答说“由于++x,故x的值变为3。由于判定了++x为真,对于或运算不再继续判断。故y,x的值不变”
但是不是说逻辑运算符&&比||高级吗?  怎么会先实行||
2013-03-05 12:50
简单学习
Rank: 2
等 级:论坛游民
帖 子:5
专家分:12
注 册:2013-3-5
收藏
得分:8 
或许你这样看更明白一些。a=++x ||(++y && z++);式子与原题一样。这时,你要明白一点,“||”是个双位运算符,就是它的左边和右边都要有操作数。当左操作数为真时,表达式为真,不会再计算右操作数。你这题就是这么个情况。++x,非0,为真。后面的不再计算。
2013-03-05 14:23
梦幻乐园
Rank: 2
等 级:论坛游民
帖 子:62
专家分:87
注 册:2012-10-25
收藏
得分:2 
||和&&他们都是只要左边的值能够确定整个式子的值就不在计算后面的值。所以你的这个式子只计算++x,这样就可以确定整个狮子的值为一。
2013-03-05 14:32
梦幻乐园
Rank: 2
等 级:论坛游民
帖 子:62
专家分:87
注 册:2012-10-25
收藏
得分:0 
与楼主的重复了,
2013-03-05 14:33
qq819073730
Rank: 2
等 级:论坛游民
帖 子:50
专家分:10
注 册:2013-1-6
收藏
得分:0 
回复 2楼 简单学习
我还是不太明白,你说 a=++x ||(++y && z++);与题目一样这个我懂,但是执行程序的时候应该先实行()里面的先啊。
2013-03-05 15:11
简单学习
Rank: 2
等 级:论坛游民
帖 子:5
专家分:12
注 册:2013-3-5
收藏
得分:0 
回复 5楼 qq819073730
那你看这个a=(++x)||(++y &&z++),这样看够清楚了吧!计算机计算式子都是从左到右计算,++x 是第一个执行的!若不信,你可以把我的式子放入程序中执行以下,看结果对不对!
2013-03-05 21:23
qq819073730
Rank: 2
等 级:论坛游民
帖 子:50
专家分:10
注 册:2013-1-6
收藏
得分:0 
呵呵。这样可以了。谢谢啊
2013-03-05 23:51
快速回复:关于逻辑函数与顺序的 问题
数据加载中...
 
   



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

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