关于c语言 ++a+++a++ a的初始值为10,运算后a?

如题所述

第1个回答  2011-09-19
语句编译错误。
按照理论来说,++a+++a++ a的初始值为10,运算后a =36
因为(++a) +(++a) +(a++) 假设都加上了括号,按照运算符优先级运算,从左到右运算.
第2个回答  2011-09-19
10 + 12 + 12 + 14 = 48
我也写了下,确实是45。下面是编译产生的汇编代码:

movl $10, -12(%ebp) ; -12(%ebp) indicate a here.
17 addl $1, -12(%ebp)
18 movl -12(%ebp), %eax
19 addl -12(%ebp), %eax
20 addl -12(%ebp), %eax
21 addl $1, -12(%ebp)
22 addl -12(%ebp), %eax
23 movl %eax, -8(%ebp)
24 addl $1, -12(%ebp)
25 addl $1, -12(%ebp)

eax 和 ebp-12 的变化过程如下
eax ebp-12
NIL 10
11 10+1
22 11
33 11+1
45 12
45 13
45 14
可以看到,初始的时候用11加了三次,最后一次加的是12
所以得到45。是编译器优化的结果。

所以,最后a是14,和为45
上面的人们,别那么武断的下结论。因为错误就往往出现在武断中。
楼主的表达式是下面这个意思:
(a++)+(++a)+(a++)+(++a)。依旧是45
本回答被提问者采纳
第3个回答  2011-09-19
错误,一点意义都没有这

关于c语言 ++a+++a++ a的初始值为10,运算后a?
语句编译错误。按照理论来说,++a+++a++ a的初始值为10,运算后a =36 因为(++a) +(++a) +(a++) 假设都加上了括号,按照运算符优先级运算,从左到右运算.

C语言中,求a++ + ++a + a++ + ++a的值,a=10,请高手讲解一下具体运算过...
(a++)+(++a)+(a++)+(++a)。依旧是45

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

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.

C语言中++a和a++的问题
前加加,先用后加;后加加,先加后用。a=10;b=a++;c=++a;=== 上述表达式等价于:a=10;b=a;\/\/后加加先用的过程。a=a+1;\/\/后加加后加的过程。a=a+1;\/\/前加加先加的过程 c=a;\/\/前加加后用的过程 === 所以结果是:a=12 b=10 c=12 ...

c语言,a++和++a的区别
1、首先我们打开Visual Studio 2015软件,新建一个C语言程序文件,如下图所示 2、然后我们导入相应的库文件,并且用printf函数打印一下a++的值以及计算后a的值,如下图所示 3、运行程序以后,你会发现a++的值没有变化,而a的值在执行完a++后增加了1,如下图所示 4、接下来我们在来看一下++a的...

C语言里 ,a=1, ++a + ++a + ++a值为12吗?为什么?
++符号优先级别高于+。++a+++a+++a先算++a就是a先自增3次,a=4;再相加,结果就是12 .很多人算成9是错的

关于C语言的怪问题(++a)+(++a)+(++a) =?
第一个(++a);\/\/a=6 第二个(++a);\/\/a=7 , 此时,a=7 这时运算a+a=14 结果保存到另一个临时变量 这时再运算第三个(++a);\/\/a=8 这时再运算b=a+14=8+14=22 在vs2010和TC2.0中先运算完括号中的运算,再进行+运算,先算出a的最终值8,再运算 b=a+a+a= 24;...

c语言++表达式的计算结果是什么??
在 C 语言中,`++` 是一个一元操作符,用于将其后面的变量的值增加 1。这个操作叫做递增操作。如果您的问题是关于简单的算术表达式,请提供完整的表达式,我才能给出准确的答案。举个例子:```c int a = 10;int b = ++a; \/\/ 先递增再赋值给b,b的值将会是11 ```在这个例子中,`++a` ...

c语言中 (++a)+(++a)+(++a)是怎么算的
2a-a²具体计算步骤如下:1、公式拆分,按照C语言计算方法和原则,这里的“=”意思是赋值,即将等号右边的数值赋值到左边去。所以公式可以依次拆分为 (1)a1=a*a (2)a2=a-a1 (3)a3=a2+a a是原来的赋值 2、以此计算原来的(1)(2)(3)式 结果为2a-a²...

相似回答
大家正在搜