C语言自增运算符及逗号表达式的小问题
有如下程序:#include<stdio.h>voidmain(){inta,b,c;a=1;b=3;c=5;printf("%d,%d\n",(++a,b++),a+b...
有如下程序:
#include<stdio.h>
void main()
{
int a,b,c;
a=1;b=3;c=5;
printf("%d,%d\n",(++a,b++),a+b+c);
}
求运行后的输出结果?
正确答案是3,9
可我用VC运行出来的结果是3,10 而我自己做出来的结果是3,11
我想知道正确的到底应该怎么做? 展开
#include<stdio.h>
void main()
{
int a,b,c;
a=1;b=3;c=5;
printf("%d,%d\n",(++a,b++),a+b+c);
}
求运行后的输出结果?
正确答案是3,9
可我用VC运行出来的结果是3,10 而我自己做出来的结果是3,11
我想知道正确的到底应该怎么做? 展开
展开全部
printf("%d,%d\n",(++a,b++),a+b+c);
printf计算是从右到左,所以先计算a+b+c=9,然后计算(++a,b++)在这逗号运算中值为最后一个b++(先使用再自增)
printf输出从左到右,所以输出为3,9
printf计算是从右到左,所以先计算a+b+c=9,然后计算(++a,b++)在这逗号运算中值为最后一个b++(先使用再自增)
printf输出从左到右,所以输出为3,9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-16
展开全部
++a表示的是a自增后使用a的值
b++表示的是先使用b的值,b再自增
所以VC中,后面的a+b+c会变成 2+3+5=10(使用了a自增的值,b还是3)
在dev-c++中为3,9
b++表示的是先使用b的值,b再自增
所以VC中,后面的a+b+c会变成 2+3+5=10(使用了a自增的值,b还是3)
在dev-c++中为3,9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++a是前置自加,意思是先自加后取值赋值给当前变量,即++a的值为2
而b++是后置字加,意思是先取值给当前变量再进行自加,即b++的值为3
而b++是后置字加,意思是先取值给当前变量再进行自加,即b++的值为3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个C标准是没有定义的,只定义了,在下一个分号结束后,所有修改都已经完成,就是说printf后,a肯定+1,b也是
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询