| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1597 人关注过本帖
标题:关于逻辑运算符与算术语句的结合使用 ——望大家帮忙解决
只看楼主 加入收藏
晓益
Rank: 4
来 自:江苏扬州
等 级:业余侠客
威 望:2
帖 子:85
专家分:220
注 册:2016-7-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
关于逻辑运算符与算术语句的结合使用 ——望大家帮忙解决
下面是我做填空题中的1道题,运行结果与参考答案一致,却与我想的不一样。
程序代码:
#include <stdio.h>

void main()
{
    int x=0, y=0, z=0;
    
    ++x||y++&&z++;    //因为++x是前缀所以x=1 又由于是逻辑或运算所以y++不计算 最后进行与运算
    printf("%d %d %d\n\n", x, y,z); //所以结果应该是 1 0 1    但实际确实 1 0 0

}
搜索更多相关主题的帖子: 填空题 include 参考答案 
2016-07-23 10:11
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:10 
注释已经很清楚了啊,++x 之后,y++, z++ 都不会执行啦

Read The Fucking Source Code~
2016-07-23 10:30
晓益
Rank: 4
来 自:江苏扬州
等 级:业余侠客
威 望:2
帖 子:85
专家分:220
注 册:2016-7-9
收藏
得分:0 
回复 2楼 zx315
++x||y++&&z++;

++x||y++  结果表达式结果是1,   x=1  y=0
1 && z++  与运算如果左边为真 那么就看右边所以就计算z++  
 所以我想的是 x=1 y=0 z=1.


我又看了下 ++x||y++&&z++;这个表达式结果是1 不是0.  z++是0啊 ,怎么结果却是1

[此贴子已经被作者于2016-7-23 10:38编辑过]


千里之行,始于足下。
思考问题伤细胞,得分不容易。解决完问题请尽快结贴
2016-07-23 10:35
西瓜shine
Rank: 2
等 级:论坛游民
帖 子:15
专家分:79
注 册:2016-7-22
收藏
得分:10 
y++&&z++,这部分都没有运行。++x运行结束为真,这条语句就结束了。
k=(++x||y++&&z++),这时k=1;
2016-07-23 10:48
晓益
Rank: 4
来 自:江苏扬州
等 级:业余侠客
威 望:2
帖 子:85
专家分:220
注 册:2016-7-9
收藏
得分:0 
回复 4楼 西瓜shine
我想我有点明白你们的意思了。。。

千里之行,始于足下。
思考问题伤细胞,得分不容易。解决完问题请尽快结贴
2016-07-23 10:54
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:0 
又想了想,之前我可能想得有点简单……这应该是一个涉及到求值顺序的问题:

首先由于 && 的优先级高于 || ,所以 ++x || y++ && z++; 相当于 ++x || (y++ && z++);
然后 C 语言规定 || 必须先对左操作符求值(C 语言只对逻辑与(&&)、逻辑或(||)、条件运算符(?:)、逗号运算符(,)有规定求值顺序),因此先执行 ++x
最后 || 是短路运算符,所以不会再对后面的表达式求值

===
关于求值顺序的问题,可以在《C陷阱和缺陷》第 57 页找到参考……
PS:上面的解答是我结合网上的一些帖子,加上自己的理解,并不一定对……对于这个表达式的求值过程,我也不是非常清楚,可能要更深入地去了解才知道,至于哪方面的内容,如果你找到了,请告诉我~

Read The Fucking Source Code~
2016-07-23 11:35
晓益
Rank: 4
来 自:江苏扬州
等 级:业余侠客
威 望:2
帖 子:85
专家分:220
注 册:2016-7-9
收藏
得分:0 
回复 6楼 zx315
非常感谢你的回答,具体的我再看看。

千里之行,始于足下。
思考问题伤细胞,得分不容易。解决完问题请尽快结贴
2016-07-23 12:01
快速回复:关于逻辑运算符与算术语句的结合使用 ——望大家帮忙解决
数据加载中...
 
   



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

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