求高手解答C++基本问题~

2025-03-22 01:46:03
推荐回答(3个)
回答1:

先算括号内的数
1.计算第一个(++a),这时,a=5+1=6
2.计算第二个(++a),这时,a=6+1=7
3、计算a+a = 7+7=14存储到临时变量中
4.计算第三个(++a),这时,a=7+1=8
5、计算b=14+a=14+8=22
计算机在计算时,采用堆栈技术实现运算过程,变量a在系统中存储的位置是不变的,所以第二个a变化时,第一个也就随之变化了。而其结果存在另一个位置,所以,最后的++a不会影响14这个数值。

回答2:

C++标准不规定求值顺序,具体由编译器决定。
我用VC2008测试:
上边三个++a后 a=8
b=8+8+8=24

回答3:

这是优先级的问题,自加(++)的优先级比加(+)的优先级高,所以,加号两边有(++)的时候应该先算自加(++),所以算法应该是这样的:
先算第一个(++a)a等于六,再算加号另一边的(++a)这是a等于七。再算加法,这时a是等于七的,所以前两个(++a)相加等于十四,再跟第三个(++a)相加就得到了22.
但是不同的编译器有不同的结果,如果用vs2008编译的话结果就是二十四。
不懂得话再问我。
求采纳