注册 登录
编程论坛 VC++/MFC

关于a++的优先级的问题。

小小小小小黄 发布于 2013-01-31 13:01, 597 次点击
1.#include<iostream>
using namespace std;
int main()
{
    int a=1;
    a=(++a)+(++a)+(++a);
    cout<<a<<endl;
    return 0;
}

答案为什么是10~,怎么看都像9.

2.课本上说:
a=10;
b=a++;
则b的值为10.
那么a=1;
a=-a++的值为什么是0?
这里的优先级是如何判断的?


9 回复
#2
OP_MoMo2013-01-31 14:28
为毛我算出来12
#3
OP_MoMo2013-01-31 14:36
答案是9没错 貌似根编译器有关
#4
青春无限2013-02-01 03:12
不同的编译器它运算方向不同。有自左向右,自右向左!!!
#5
小小小小小黄2013-02-01 11:15
回复 2楼 OP_MoMo
不是应该是2+3+4么,不就是9么~
#6
小小小小小黄2013-02-01 11:16
回复 4楼 青春无限
就是用的VC++啊~,为毛答案不对啊,而且第二个问题更加诡异了~- -
#7
d_language2013-02-03 15:44
我算出来就是9,估计跟你的编译器有关系吧!
#8
onlylovesun2013-02-03 20:54
b=a++
先取a的值然后再自加
a=-a++
也是同样的道理
#9
hlhlf42013-02-04 12:56
我用的是VC6.0

第一个
a = 10

第二个
a = 11
b = 10

貌似是跟编译器有关
VC6.0的编译器还真是搞不懂。。。求教达人解释
#10
wp2319572013-02-04 13:17
除非考试  否则根本不适用 算他干嘛
1