| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 378 人关注过本帖
标题:【求助】【新手】关于优先级的问题
只看楼主 加入收藏
huangdi95
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-11-14
收藏
 问题点数:0 回复次数:4 
【求助】【新手】关于优先级的问题
#include<iostream>
using namespace std;
int main()
{
    int i(1),j(1),k(3);
    --i&&j++&&k--;
    cout<<i<<'\t'<<j<<'\t'<<k<<endl;

    ++i||j--||--k;
    cout<<i<<'\t'<<j<<'\t'<<k<<endl;
    system("pause");
    return 0;
}

运行结果是:
0    1    3
1    1    3

不太明白,哪位大虾可以详细解释一下吗???
我是刚学C++的,望各位多多指教!!谢谢!!
搜索更多相关主题的帖子: std 优先级 
2010-03-12 23:51
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
通常的编译器是从左向右运算的,所以
--i&&j++&&k--;
前运算了--i,这时的i为0
在碰到运算符&&时,由于i==0相当于假,而&&的一个特性就是碰到假就返回,所以它后面的运算并不会执行,这就是为什么结果只有i被操作而其它变量没有被操作的原因
++i||j--||--k;
操作符||正好相反,在碰到运算值为真的时候返回,这里,先运算了++i,i为1,是真,所以,反面的运算操作又跳过去了。
2010-03-13 14:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
一般来说 && || 都是用在 if 之类里用来判断的,很少这么用。
这么写,就是利用表达式的副作用,还有短路求值的特性。
2010-03-13 15:51
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
不同的编译器 你会感觉不同的
2010-03-13 20:16
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
还是别研究这种东西的好^_^

[ 本帖最后由 succubus 于 2010-3-15 09:10 编辑 ]

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-03-15 09:09
快速回复:【求助】【新手】关于优先级的问题
数据加载中...
 
   



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

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