函数参数为算数表达式,算术表达式的实行顺序探究
来源:互联网 发布: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()结果都是这样的。
到底对不对?上网搜罗了半天也没有人碰到这样类似的情况,只能暂且这样认为。
- 函数参数为算数表达式,算术表达式的实行顺序探究
- 算数运算符与算术表达式
- 算数运算符和算术表达式
- 算数运算符和算术表达式
- 算数运算符和算术表达式
- 算数运算符和算术表达式
- 简单的算数表达式
- 算数表达式的计算
- 中缀算术转后缀算术表达式并计算的函数
- 算术表达式的转换 (算数表达的转换建树及遍历)
- 【C语言】【11】算术运算符与算数表达式
- 算术表达式的计算
- 算术表达式的计算
- 算术表达式的转换
- 算术表达式的转换
- 算术表达式的转换
- 算术表达式的转换
- 算术表达式的转换
- java 读写Excel
- Could not write metadata for '/RemoteSystemsTempFiles'.
- HTTP非持久连接和持久连接
- form表单设置enctype="multipart/form-data"后获取参数
- Lucene 4.4 环境测试
- 函数参数为算数表达式,算术表达式的实行顺序探究
- Redhat Linux网卡配置与绑定
- 转:不可多得的干货分享! 成功学听腻了,我们需要更多正能量的失败学
- HTML5表单教程之Form新属性的应用
- jQuery读书笔记二 jQuery中的事件与应用
- Jquery 使div永久居中_屏幕改变大小仍然居中实例
- Oracle的unlimited tablespace系统权限
- opencv读取图像中的元素的方法
- C++空类中的默认函数