函数参数为算数表达式,算术表达式的实行顺序探究

函数参数为算数表达式,算术表达式的执行顺序探究

.

.

曾经做了这样一道题目:

void foo(int x, int y, int z)

{

         printf("%d %d %d\n",x,y,z);

}

void main()

{

         int a=10,b=20,c=30;

         foo(a+b+c,b=(c*2),c=(c+b));

}

 

         最后的输出结果竟然是

                  160,100,50

         这个结果当然不能理解,本以为应该是60,60,90的。

 

         于是就做了下面的测试:

         void foo(int x, int y, int z)

{

                   printf("%d %d %d\n",x,y,z);

}

void main()

{

         int a=10,b=20,c=30;

         printf("%d %d %d\n",a+b+c,b=(c*2),c=(c+b));         //160 100 50

         printf("%d %d %d\n\n",a,b,c);                                     //10,100,50

 

         a=10,b=20,c=30;

         foo(a+b+c,b=(c*2),c=(c+b));                                          //160 100 50

         printf("%d %d %d\n\n",a,b,c);                                     //10,100,50

 

         a=10,b=20,c=30;

        foo(a=c*2,b=(a*2+c),c=(b+a+10));                             //80,60,40

        printf("%d %d %d\n\n",a,b,c);                                     //80,60,40

}

         输出截图如下:

        

 

         经过思考观察,发现应该是当函数的参数中是算数表达式的时候,它的执行顺序应该是从右向左,但是这只是我的猜测,并进行了初步的验证,不管是printf()函数还是自定义的函数foo()结果都是这样的。

         到底对不对?上网搜罗了半天也没有人碰到这样类似的情况,只能暂且这样认为。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值