以下程序运行后的输出结果是 main() {int a,b,c; a=1;b=3;c=5; printf(“%d,%d\n”,(++a,b++

以下程序运行后的输出结果是 main() {int a,b,c; a=1;b=3;c=5; printf(“%d,%d\n”,(++a,b++),a+b+c);为什么结果是3,9而不是3,11啊

结果是3,10啊。这主要是由于自增操作符++前置还是后置决定的,比如说++a,就是先自增再使用,而a++就是说先使用再自增。执行printf(“%d,%d\n”,(++a,b++),a+b+c)这条语句的过程中,a=2(就是说已经自增了),b=3(还没自增)。等这条语句执行完之后,那么a=2 b=4~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-23
我运行了下,结果是3,10
#include<stdio.h>
main()
{ int a,b,c;
a=1;
b=3;
c=5;
printf("%d,%d\n",(++a,b++),a+b+c);
}
这里面的(++a,b++)是个逗号表达式,a++和b++都运行了但最后输出b++的结果
所以a+b+c就是2+3+5追问

为什么是2+3+5而不是2+4+5?

追答

额,你是写的2+4+5吧
也就是b的值弄错了,因为它是b++,所以你应该先把b直接代入,然后执行++,这时b才等于4,不过对你运行的结果也没用啦,所以你把b++看成b就行啦
列如:b=3 ; printf("%d",b++)它的结果是3,不是4哦~~

第2个回答  2011-12-23
如果你在下面再加一句printf(“%d,%d\n”,(++a,b++),a+b+c);a,b的值就会变。
而这样的话应该printf函数对变量只读一遍,就是在一个printf中a都是1了。
第3个回答  2011-12-23
printf(“%d,%d\n”,(++a,b++),a+b+c);其中的(++a,b++)是什么东东,有这么写的吗?
++a 表示先a=a+1再输出,b++表示先输出再b=b+1
相似回答