民生银行mc个人普卡:求printf("%d,%d,%d",i,++i,++i)的顺序C高手进######!!!!

来源:百度文库 编辑:高校问答 时间:2024/05/02 05:09:53
main()
{int i=3; printf("%d,%d,%d",i,++i,++i);}
稍不注意就是3,4,5
错了,正确答案是5,5,4 从右往左,
一般是从左往右的,为什么这个就不一样了呢?
54zero这位大哥说的不对哦
跟编译器有关是对的!!!
以下顺序全是自右向左,没有那个区别(用的同一个编译器)
main()
{int i=3;printf("%d,%d",i++,++i);}4,4/*后i自增为4,前i仍为4*/
main()
{int i=3;printf("%d,%d",++i,i++);}5,3/*后i仍为3,前i(4+1)为5*/
main()
{int i=3;printf("%d,%d",++i,i);}4,3
main()
{int i=3;printf("%d,%d",i,++i);}4,4
main()
{int i=3;printf("%d,%d,%d",++i,i,++i);}5,4,4
欢迎在来讨论这个问题!!!谢谢

5,5,4 的情况是从右向左的顺序。
不同编译器的顺序会有不同。
写程序不要用这种既不易读、又容易出错的语句。
养成一种良好的编程习惯很重要。
祝你成功!

哈哈~ 是这样不同编译器的顺序会有不同TC2.0-TC++3.0应该是这结果
C 里有个说头 就是(优先 级别)
前自增(++i)地优先级别高于 后自增i++。
而就这题printf 里是 先判断 先自增且为从右到左 。
也就是说 : printf 里 地优先次序是
有自增>无 自增 (且执行次序为由右到左)
好了朋友 您该明白了吧 ~ (^_^)

回答者:54zero - 试用期 一级 4-17 21:19

我认可这个大哥说的!!

应该上编辑器问题吧

同意54zero的

main()

{int i=3;printf("%d,%d",++i,i);}4,3


答案是4,4;不是楼主说的:4,3


参数用从右到左进栈运算!i++先用i再++