关于(++a)+(++a)+(++a)的问题该怎样思考?#include void main(){int a=5,b;b=(++a)+(++a)+(++a);printf("%d\n",b); }的运行结果是什么?在vc6.0上运行的结果为22,可是书上的结果却为24.这样的题该怎样思考呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/12/02 14:31:38
关于(++a)+(++a)+(++a)的问题该怎样思考?#include void main(){int a=5,b;b=(++a)+(++a)+(++a);printf(
xSn@#($^F7@ (m* &J[C#(T< |L}Ê_CE6]uQY<{3`* :.&`ޚ^s"_ck~'IQ"q]b6HG[4U u@{_$P}d^"69×U|.VϜOan&F=GM ZPwN2Ju;*ڰ1d6V[֍ބ`,JhaU&T8?^JC,QUЕHMf3PD:U1EDZY 陦|#)\ KE2q_1g5ARA#z`%SYM/,k 7YCPЦ]Apw0IMkIPuĝ.!?%uxTxz8KE0 T.u'Si>:c{_O5yRyDo9aE8/h:)  =zfPl-KZғmو$ږ 0@);]8 Z'3)ߊBn&w3T*݆<:>M7K}

关于(++a)+(++a)+(++a)的问题该怎样思考?#include void main(){int a=5,b;b=(++a)+(++a)+(++a);printf("%d\n",b); }的运行结果是什么?在vc6.0上运行的结果为22,可是书上的结果却为24.这样的题该怎样思考呢?
关于(++a)+(++a)+(++a)的问题该怎样思考?
#include
void main()
{
int a=5,b;
b=(++a)+(++a)+(++a);
printf("%d\n",b);
}的运行结果是什么?在vc6.0上运行的结果为22,可是书上的结果却为24.这样的题该怎样思考呢?

关于(++a)+(++a)+(++a)的问题该怎样思考?#include void main(){int a=5,b;b=(++a)+(++a)+(++a);printf("%d\n",b); }的运行结果是什么?在vc6.0上运行的结果为22,可是书上的结果却为24.这样的题该怎样思考呢?
因为C语言没有规定表达式的求值顺序,视具体编译器而定:
涉及编译器对表达式的求值处理,如下:
1、微软系列的编译器:
只要表达式中有前置++,就先对++做处理,所以先做三次++,此时a=8,三个(++a)的返回值都是8,然后做加法,8+8+8=24
2、gcc编译器:
对于加法表达式,按照从左到右结合顺序
只要运算符两边有++,就先做++,所以先运算(++a)+(++a),返回值再+(++a).
做(++a)+(++a)时,先做两次++,此时a=7,返回7+7=14,然后做14+(++a);
此时a=8,然后做14+8=22;