读书人

关于C语言函数参数的实施顺序

发布时间: 2013-08-09 15:16:24 作者: rapoo

关于C语言函数参数的执行顺序
谁能帮我解释一下为什么下面printf函数参数的执行顺序各不一样
int i = 0;
char* src = "12345";

printf("%d %d\n", i++, i);
printf("%c %c %c\n", *src++, *src, *src++);
printf("%s %s %s\n", src++, src, src++); C printf
[解决办法]
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!

[解决办法]
这是函数传参大忌,参数中不应依赖带有副作用的表达式,这样的写法是要看编译器实现的(其实就是个错误,除非你非常了解你的编译器,知道结果。),所以传参不可以这样写!

读书人网 >C语言

热点推荐