| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1763 人关注过本帖
标题:关于C语言中的短路问题
只看楼主 加入收藏
a151141
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:197
专家分:680
注 册:2012-10-19
结帖率:78.57%
收藏
已结贴  问题点数:40 回复次数:4 
关于C语言中的短路问题
#include<stdio.h>
main()
{
    int x,y,z,t;
    x=y=z=t=1;
    t=++x||++y&&++z;
    printf("%d\n",x);
    printf("%d\n",y);
    printf("%d\n",z);
    printf("%d\n",t);

}
为什么y不是2呢?
在C语言中&&的优先级要比||的的优先级高啊?
搜索更多相关主题的帖子: C语言 优先级 
2014-03-23 14:35
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:14 
    t=++x||++y&&++z;
短路原则: 对于A  ||  B || C 来说,当A为1时,不再计算B,C
因为最先计算++x,其值为2在逻辑运算中值为真,由短路原则可知表达式(++y&&++z)不再计算。所以y和t的值仍为1.
2014-03-23 15:03
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
短路原则和优先级无关, 对于A  ||  B || C 来说,只要当表达式A为1时,就不再计算表达式B和表达式C
2014-03-29 10:16
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:14 
因为++x=2已经为真,所以不再对 || 后面的表达式进行运算

三十年河东,三十年河西,莫欺少年穷!
2014-03-29 12:07
generalshao
Rank: 2
等 级:论坛游民
帖 子:20
专家分:21
注 册:2010-5-14
收藏
得分:14 
++x=2优先级高
2014-03-29 16:48
快速回复:关于C语言中的短路问题
数据加载中...
 
   



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

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