| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1010 人关注过本帖
标题:C中逻辑运算符的优先级问题
只看楼主 加入收藏
浩加加
Rank: 2
等 级:论坛游民
帖 子:51
专家分:14
注 册:2009-11-12
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:6 
C中逻辑运算符的优先级问题
#include<stdio.h>
void main(){

 int a,b,c,d;
 a=b=c=1;
 d=++a||++b&&++c;
 printf("d=%d,a=%d,b=%d,c=%d\n",d,a,b,c);
}
输出为什么是d=1,a=2,b=1,c=1
&&的优先级比||高的话,应该先执行++b&&++c,结果等于1,那么b和c应该都增1才对啊,望各位高手指教,谢谢了!
搜索更多相关主题的帖子: 逻辑运算符 
2010-01-17 16:55
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:20 
  逻辑或(有一项为真即为真)               当d=++a||++b&&++c时,先执行++a   a=2   即为真,则后面的++b&&++c不在运算,把1(真)赋给d,因此最后输出是d=1,a=2,b=1,c=1

2010-01-17 18:10
浩加加
Rank: 2
等 级:论坛游民
帖 子:51
专家分:14
注 册:2009-11-12
收藏
得分:0 
&&的优先级比||高的话,应该先执行++b&&++c的啊

向来缘浅.奈何情深 如花美眷.似水流年
2010-01-17 19:38
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
优先级别是高        为了好理解加括号上去              d=(++a)||((++b)&(&++c))       执行||左边的++a后                            相当于d=1||(++b&&++c)   ||右边就不会执行了                   你 有没有武汉大学出版社的C语言程序设计书         第36页有个差不多的列题
2010-01-17 20:46
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
打错了          是d=(++a)||((++b)&&(++c))
2010-01-17 20:47
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
d=(++a)||{(++b)&&(++c)}   先算小括号里的  在算大括号里的      但从左到右先执行++a     就成了d=2||{(++b)&&(++c)}   一项为真即为真   ||右边的就不会执行了,得d=1。
2010-01-17 20:56
浩加加
Rank: 2
等 级:论坛游民
帖 子:51
专家分:14
注 册:2009-11-12
收藏
得分:0 
= =原来这样啊`谢谢拉

向来缘浅.奈何情深 如花美眷.似水流年
2010-01-17 21:27
快速回复:C中逻辑运算符的优先级问题
数据加载中...
 
   



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

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