C语言程序 求解释

#include<stdio.h>
main()
{ int a=100;
printf("a++=%d\n",a++);
printf("++a=%d\n",++a);
printf("a--=%d\n",a--);
printf("--a=%d\n",--a);
}

为什么不是101,而是102

第1个回答  2012-09-29
a++是先执行操作再自增,++a是先自增再执行操作;--同理。

printf("a++=%d\n",a++);
先输出a的值,再执行++操作,输出是a还没有自增,所以输出100,输出后a自增为101
printf("++a=%d\n",++a);
先自增a,再输出a值。此时a因为上一步的a++已经变为101,再++a后变为102,此时输出a为102,而不是101
printf("a--=%d\n",a--);
先输出a的值,再执行--操作,输出时a仍为上一步的102,输出后a才自减为101
printf("--a=%d\n",--a);
先自减a,在输出a值。此时a因为上一步的a--已经变为101,再--a后变为100,此时输出a为100

问题的关键在自增自减是先执行还是后执行本回答被提问者采纳
第2个回答  2012-09-29
#include<stdio.h>
main()
{ int a=100; //双引号中的内容只是原样输出,不参与任何的算数运算
printf("a++=%d\n",a++); // 100 a++表达式的值是100, 但是输出函数执行后a=101
printf("++a=%d\n",++a); // 102 ++a表达式的值是102, 但是输出函数执行后a=102
printf("a--=%d\n",a--); // 102 a--表达式的值是102, 但是输出函数执行后a=101
printf("--a=%d\n",--a); // 100 --a表达式的值是100, 但是输出函数执行后a=100
}本回答被网友采纳
第3个回答  2012-09-29
打印如下
a++=100
++a=102
a--=102
--a=100
a++是执行语句再加加,++a是先加加再执行语句
a--是先执行语句再减减,--a是先减减再执行语句
第4个回答  2012-09-29
因为第一个输出语句执行后a已经加1了,第二个语句++a是a先加1再赋值的,所以a = 102;
第5个回答  2012-09-29
a++是先取值再运算,++a是先运算再取值
所以输出的时候应该是
100
102
102
100
相似回答