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
我想知道正确的到底应该怎么做?
展开
 我来答
lj84386655
2012-05-16 · TA获得超过944个赞
知道小有建树答主
回答量:358
采纳率:100%
帮助的人:242万
展开全部
正确答案错了,vc跑出来的3.10是正确的
首先(++a,b++) a先加加b直接取值在加加 得到(2,3)结果为 3
然后 a+b+c 为 2+3+5 结果为10 (后缀++,为遇到;或}时,算作一个程序块结束时进行加加,所以当运行完printf("%d,%d\n",(++a,b++),a+b+c);句时b的值才为4)
shenxu21
2012-05-16 · TA获得超过571个赞
知道小有建树答主
回答量:183
采纳率:75%
帮助的人:75.5万
展开全部
printf("%d,%d\n",(++a,b++),a+b+c);
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
crazysnail_1
2012-05-16 · TA获得超过228个赞
知道小有建树答主
回答量:560
采纳率:0%
帮助的人:223万
展开全部
++a是前置自加,意思是先自加后取值赋值给当前变量,即++a的值为2
而b++是后置字加,意思是先取值给当前变量再进行自加,即b++的值为3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanghuir
2012-05-16 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:166万
展开全部
这个C标准是没有定义的,只定义了,在下一个分号结束后,所有修改都已经完成,就是说printf后,a肯定+1,b也是
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式