C语言问题: printf("%d %d %d %d\n",i,j,m=++i,n=j++);
#include<stdio.h>intmain(void){inti=8,j=10,m=0,n=0;printf("%d%d%d%d\n",i,j,m=++i,n=j+...
#include<stdio.h>
int main(void)
{
int i=8,j=10,m=0,n=0;
printf("%d %d %d %d\n",i,j,m=++i,n=j++);
return 0;
}
运行结果是9 10 9 10
为什么是这个答案,不理解。(因为我自己觉得答案是8 10 9 10) 展开
int main(void)
{
int i=8,j=10,m=0,n=0;
printf("%d %d %d %d\n",i,j,m=++i,n=j++);
return 0;
}
运行结果是9 10 9 10
为什么是这个答案,不理解。(因为我自己觉得答案是8 10 9 10) 展开
7个回答
展开全部
printf 函数的参数是从右向左运算,然后,再从左向右输出的。
其顺序是,n = j++ 为n为10,m=++i,m为9,此时i,j的值变成,9,10(j的还没变,printf返回后,再变)。这时,再从左向右输出表达式。因此结果就为9,10,9,10
其顺序是,n = j++ 为n为10,m=++i,m为9,此时i,j的值变成,9,10(j的还没变,printf返回后,再变)。这时,再从左向右输出表达式。因此结果就为9,10,9,10
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,楼主的运算顺序反了,应遵循从右向左的顺序,则依次计算为
n=j++ 自加在后,可以先忽略了 n=10
m=++i 则i的值为9 m=9
所以printf为9 10 9 10
希望对你有帮助。
n=j++ 自加在后,可以先忽略了 n=10
m=++i 则i的值为9 m=9
所以printf为9 10 9 10
希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
亲,答案是9 11 9 10
原因是
i++是先计算后再加1 i=5这个是计算,i++就是i=5+1
++i是先自加1后再计算 ++i就是i+1=i i+5
所以
原因是
i++是先计算后再加1 i=5这个是计算,i++就是i=5+1
++i是先自加1后再计算 ++i就是i+1=i i+5
所以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主忽悠了好些人,一看他们就是猜得
正确答案是 9 11 9 10
和他们说的一样啊,从右向左计算,右边优先级最高,
各位下次回答的时候拜托先验证一下,别误导了别人
正确答案是 9 11 9 10
和他们说的一样啊,从右向左计算,右边优先级最高,
各位下次回答的时候拜托先验证一下,别误导了别人
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询