A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© TLTY 初级黑马   /  2014-6-28 17:10  /  1135 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

void main()
{
int a=1,b=2,c=3,d=4;
printf("%d,%d,%d,%d",a+=b,a,d,d+=c);
getch();
}
编译结果是:3,1,7,7.
注:输出语句和子函数的实际参数值顺序是是从右到左的

7 个回复

倒序浏览
不对,这个顺序是没有保证的。c标准写得很清楚:The order of evaluation of the function designator, the actual arguments, and subexpressions within the actual arguments is unspecified
回复 使用道具 举报
fantacyleo 发表于 2014-6-28 17:43
不对,这个顺序是没有保证的。c标准写得很清楚:The order of evaluation of the function designator, the ...

额,能用汉语吗,我英文不好,这是我在博客和书上看到的
回复 使用道具 举报
TLTY 发表于 2014-6-28 18:40
额,能用汉语吗,我英文不好,这是我在博客和书上看到的

就是说一个函数带多个参数的,到底先对哪一个参数求值,c标准并没有规定这个顺序。这个例子中,是先计算a+=b还是先计算a,不同编译器可能有相同的做法,也可能不同,应该避免这样的写法
回复 使用道具 举报
恩 。。。。。。。
回复 使用道具 举报
fantacyleo 发表于 2014-6-28 20:29
就是说一个函数带多个参数的,到底先对哪一个参数求值,c标准并没有规定这个顺序。这个例子中,是先计算a ...

哦,谢谢啊
回复 使用道具 举报
libra 中级黑马 2014-6-29 15:36:31
7#
学习了~~
回复 使用道具 举报
zhs 中级黑马 2014-6-30 06:59:52
8#
printf输出多个参数时
求值顺序虽是自右至左,但是输出顺序还是从左至右
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马