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;
} 展开
#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;
} 展开
3个回答
展开全部
b++是后缀,先按b的值进行计算后+1,当你要输出b++时候,还是输出b的值,b的值才+1,你可以在后面写多个输出语句输出b的值,可以看到b的值是5的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询