int a=1; printf("%d, %d, %d\n", a, ++a, a++);结果是

 我来答
一叹t
高能答主

2021-01-15 · 我们不创作,我们只是信息的搬运工。
一叹t
采纳数:2138 获赞数:11971

向TA提问 私信TA
展开全部

执行int a=1; printf("%d, %d, %d\n", a, ++a, a++)的结果为3,3,1。这个语句的输出结果不是唯一的,因为对于求值的顺序是不一定的,所以说还有可能输出的结果为1,2,2。

当求值的顺序为自右向左是,那么a++先引用1然后再加1,会输出1,然后++a是先加1再引用,会输出3这个结果,最后输出一下a,结果为3。结果为:3,3,1。

当求值的顺序为自左向右的话,先输出一下a,输出1,然后++a,先加1再引用,输出2,然后a++先引用再加1,引用2,所以输出2,结果为:1,2,2。

主要就是要注意:printf()语句多个参数的执行顺序,从右往左的,但是不同编译器可能不同。

扩展资料:

printf参数表的注意:

参量表是需求输出的一系列参数,其个数务必与式样化字符串所阐明的输出参数个数一样多,各参数之间用英文逗号“,”分开,且顺序逐一对应,不然将会出现意想不到的错误。

printf使用注意:

函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。(会因编译器的不同而不同,但是大部分一样)

printf函数格式:

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。

函数的原型为:

int printf(const char *format,…);

参考资料来源:百度百科-printf()

Negamax
推荐于2018-02-28 · TA获得超过2721个赞
知道小有建树答主
回答量:656
采纳率:100%
帮助的人:277万
展开全部
1:知识点a++表示先用a后把a+1
++a表示先把a+1,然后在用
2:【考点。printf()语句多个参数的执行顺序,从右往左的】
3:分析,从右往左:a++,先打印a=1,然后a+1,这时a变成2
++a,a先加一,a=3,打印出来。
a,直接打印3
DevC++编译结果:
3,3,1

说明:楼主,这个题目是有点争议的。不同的编译器对这个输出的处理顺序是不同的。但是C的表准和考试的时候绝大部分都是以TC2.0为准的。建议写上面的方案。
你可以在TC,DEVC++,VC下都测试下。
楼主好运!
追问
为什么不是从左到右执行得到1,2,2
追答
从左往右你看看
开始
a=1 所以打印1
然后++a,a先加一,然后变成2打印 所以是2
最后a++,表示先用a,打印2,然后a+1=3(不显示了)呵呵。
就这些了。睡了。晚安!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duzhanzxs
2012-03-31 · TA获得超过341个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:247万
展开全部
未定义的结果.劝楼主不要纠结.已经回答了N个类似问题.
这个结果依据不同的编译器实现而定.因为求值顺序是不确定的(c标准没有对这里的求值顺序做说明,所以各个编译器有自由改变求值顺序).所以很难有一个一致的结果.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-31
展开全部
2,2,1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水子尚
2012-03-31
知道答主
回答量:45
采纳率:0%
帮助的人:14.5万
展开全部
1,2,2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式