求分析一个C语言程序~ 谢谢!

#include<stdio.h>voidmain(){inti=1;printf("%d,%d,%d",i,i++,i++);}... #include <stdio.h>
void main ()
{
int i=1;
printf("%d, %d, %d",i,i++,i++);
}
展开
 我来答
xzhw8608
2013-03-30 · TA获得超过1779个赞
知道小有建树答主
回答量:1074
采纳率:100%
帮助的人:573万
展开全部

我觉得你的编译器有问题吧

而且在函数参数出现关联不是一个好的编程风格,因为函数参数的求值顺序是未定义的,编译器可以选择从左向右求值,也可以从右向左求值.这两种编译器是事实存在的,但是不管从哪边开始求值也不可能输出都是1


GCC采用从右向左求值,输出是3,2,1

知道不知道巨蟹
2013-03-29 · 超过17用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:45.5万
展开全部
i++是先表示为i再加1 而++i是先表示为先加1再用
函数的参数是从右往左逐个入栈。在你这里,也就是先执行i++,再到i++,再到i,这样的顺序,明白为什么了吧 所以就是1 1 1咯
追问
那么能不能解释一下i++执行过一次以后i没有加1呢?
追答
i++这个要执行到遇到;的时候才会加1 并不是执行就加1的 printf("%d, %d, %d",i,i++,i++);这是一个语句 没执行完就不加1啊 所以一直还是1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llqbbd
2013-03-29 · TA获得超过194个赞
知道答主
回答量:122
采纳率:100%
帮助的人:50.7万
展开全部

#include <stdio.h>        //包含进头文件
void main () //主函数
{
int i=1; // i = 1 初始化并赋值
printf("%d, %d, %d",i,i++,i++); //打印三个数,i(就是1),i++(还是1,然后i变成2),i++(这时i是2 了,打印2 ,然后i变成3)
}

追问

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式