设整型变量a为2,那么(++a)+(++a)+(++a)的结果是多少?

如题所述

第1个回答  2011-01-14
利用GCC 编译出来的是13
13
在电脑上执行出来的结果

劝楼主不要纠结于毫无意义甚至是危险的代码,没有一个正规程序员会这样写代码的,因为这样的代码是不确定的,不同的编译器,不同的编译环境都有可能导致结果的不同。
a的值取决于几个表达式执行的顺序,然而这些表达式的执行顺序不一定是确定的!

“表达式有两种功能。每个表达式都产生一个值( value ),同时可能包含副作用( side effect ),比如:他可能修改某些值。
规则的核心在于 顺序点( sequence point ) [ C99 6.5 Expressions 条款2 ] [ C++03 5 Expressions 概述 条款4 ]。 这是一个结算点,语言要求这一侧的求值和副作用(除了临时对象的销毁以外)全部完成,才能进入下面的部分。 C/C++中大部分表达式都没有顺序点”

请楼主看一下下面的参考资料

参考资料:http://htqx.javaeye.com/blog/169635

第2个回答  2011-01-14
a=2,那么(++a)+(++a)+(++a) = (3)+(4)+(5)=12,电脑上运行一下不就知道了本回答被提问者采纳
第3个回答  2011-01-14
b=(++a)+(++a)+(++a);
TC中的结果:b=18,a=6;VC中的结果:b=16,a=6
前面的不要乱说!!

设整型变量a为2,那么(++a)+(++a)+(++a)的结果是多少?
a的值取决于几个表达式执行的顺序,然而这些表达式的执行顺序不一定是确定的!“表达式有两种功能。每个表达式都产生一个值( value ),同时可能包含副作用( side effect ),比如:他可能修改某些值。规则的核心在于 顺序点( sequence point ) [ C99 6.5 Expressions 条款2 ] [ C++03 5 Expressions ...

c语言中,a=2,m=(++a)+ (++a)+(++a),为什麽等于13,费解,哪位大神给解...
a=2,m=(++a)+ (++a)+(++a)+(++a) 值应该是19 (4 + 4 + 5 + 6)a=2,m=(++a)+ (++a)+(++a)+(++a)+(++a) 值应该是26 (4 + 4 + 5 + 6 + 7 )a=2,m=(++a)+ (++a)+(++a)+(++a)+(++a)+(++a) 值应该是34 (4 ...

c语言中 (++a)+(++a)+(++a)是怎么算的
结果为2a-a²

c语言(a++)+(a++)+(a++)和(++a)+(++a)+(++a)
a=3时,因为a++是变量a先参与其他运算再加1,所以(a++)+(a++)+(a++)实际上是3+3+3=9,运算后a的值是6.++a则是先求a=a+1,然后再做其他运算,所以(++a)+(++a)+(++a)实际上是5+5+6=16,运算后a的值是6.

关于(++a)+(++a)+(++a)的问题该怎样思考?
b于是等于24.实际上a应该是先自加2次变成7,_b=14,然后a自加一次变成8,b=14+8=22.b=(++a)+(++a)+(++a)是这样运算的:a++;a++;b=a+a;a++;b=b+a;如果不相信可以进行试验(分开做):b=(++a)+(++a)b=(++a)*(++a)b=(++a)*(++a)+(++a)这是编译器的原因 ...

(++a)+(++a)?
++a使用a进行自增后的结果,(++a)+(++a)两次自增1后a的值为5,所以5+5=10 而(++a)+(++a)+(++a)是三次自增后a=6,所以结果应该是18,不知道你有没有写错.这是要说明的是++a是先运算后引用,而a++是先引用后运算,在使用的时候要注意.补充:我在TC2的调试后面的一个是18;但VC为什么是...

b=(++a)+(++a)+(++a)怎么运算
b=(++a)+(++a)+(++a)依据从左向右的顺序, 相当于b=((++a)+(++a))+(++a)所以它的计算过程如下(这里就是"脱括号"的过程了, a=0)b=(a+(++a))+(++a), 第一次脱括号的结果, 这时a=1 b=(a+a)+(++a), 第二次脱括号的结果. 这时a=2 b=(2+2)+(++a),b=4+(++...

c语言的问题 a = (++a)+(++a)+(++a)+(++a) 计算原理
++a是左值,它的值是累加了1之后的a,是【变量】。而a++则仅仅是一个【值】,这个值等于变量a的原始值。因此对于(++a)+(++a)+(++a),过程如下:先取第一个++a和第二个++a,以进行二元运算“+”此时,经过两次++,a的值变为3 因此计算结果为a+a=6,此时不再是变量,而是值6 然后再取...

(++a)+(++a) 值是多少 a是多少
(++a)+(++a)=196,a=97.这要用到C语言程序设计的基本知识。这里的a的ASCAII码是97,++a的意思是先给a的值加一再参与运算(对应的有a++,它的意思是先用a的值参与运算再给它加一)

int a=0;a=(++a)+(++a)+(++a);a=?
int x = (++i) + (++i) + (++i);int y = (j++) + (j++) + (j++);看到挺多人在争论,这样的表达式值应该是多少?甚至拿出几个不同的编译器来编译运行得到几个不同的结果。对于此题的答案,一句话,The behavior is undefined! 详细解释待我慢慢说来。大家知道,通常而言,我们写的...

相似回答
大家正在搜