标题:【求助】【新手】关于优先级的问题
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-299253-1-1.html




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

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