3.21 以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); }A)30 B)31 C)32 D)33

来源:学生作业帮助网 编辑:作业帮 时间:2024/08/01 09:15:34
3.21 以下程序的输出结果是 main() { int a=21,b=11; printf(
xRn@U%n.NF*#6DQ !Զ MBM&| S~EU43;g9N^I$@hɑXSv>ec<ۛHDyE/[+I 93n=x-AّA^aW4HQjqMoHd &ٹ Nٹ V鴚?jQ{K<:֣䈻CfY],ds*I.xldohCxD|agN_2\K#k2~7J=>5K9*l|^ЃR*y2 P%FB[fIqRqh5ZѴ28ޙr"!_! Cc_TEwW˙zjZ`TS,B`-A0ft7aSY,r{EauL}4

3.21 以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); }A)30 B)31 C)32 D)33
3.21 以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); }
A)30
B)31
C)32
D)33

3.21 以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); }A)30 B)31 C)32 D)33
选A、30
现场编译得出的答案
c语言是一门科学,要注重实验;
会得出30 的原因是printf函数中,输出表达式的运算顺序是由右到左的,先计算后面的(--b+a),此时,b的值自减1,变为10,再计算前面的(--a+b).对于--a和a--的区别应该不用我说了吧.所以最后结果是30.
而编译程序只是在检查printf中的格式化参数后才确定有几个输出项,并按次序输出,所以最后输出的是(--a+b)的值