C语言求解,谢谢

为什么nextmun的输出结果是30,而不是36?b的增量哪里去了?,求详解#include<stdio.h>intmain(void){inta=2,b=3,nextm... 为什么nextmun的输出结果是30,而不是36?b的增量哪里去了?,求详解
#include<stdio.h>
int main(void)
{
int a=2,b=3,nextmun=(a+b++)*6;
printf("%d %d %d %d\n",a,b,nextmun,b++);
return 0;
}
展开
 我来答
makelihua
2013-10-26 · 超过16用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:37.8万
展开全部
b++是后缀,先按b的值进行计算后+1,当你要输出b++时候,还是输出b的值,b的值才+1,你可以在后面写多个输出语句输出b的值,可以看到b的值是5的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6a6aa8c
2013-10-26 · TA获得超过1483个赞
知道小有建树答主
回答量:707
采纳率:100%
帮助的人:738万
展开全部
b++ //这个++是后缀形式,那么是先赋值,后自增
如果是++b,才是36
追问
我试过了如果(a+++b)*6,结果还是30,必须吧++b圈起来,还有个问题,为什么输出的结果里面b和b++都是4,按道理应该b++是5
追答

按道理输出是这样的

printf("%d %d %d %d\n",a,b,nextmun,b++);//结果应该是2 5 30 4

b++永远是先赋值,后自增

 

printf是右边向左边计算,b++应该是4,再往左边计算,到b的时候,b为5

 

printf里面的计算顺序是b++,nextmun,b,a

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-01-13 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5718万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式