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

来源:互联网 发布:windows 网络编程 编辑:程序博客网 时间:2024/06/05 15:07

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

.

.

曾经做了这样一道题目:

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()结果都是这样的。

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

 

原创粉丝点击