“未定义”的求值顺序问题

printf 貌似是从右向左执行的。

但其实换一种编译器可能就产生不同结果。或者去掉 ++ 也会有意想不到的结果。

 

编程原则: 不要把 ++, -- 和其它 表达式混合写在一行, 否则会有无穷多的类似问题!

 

这是一个“未定义”的求值顺序问题,C99标准里专门有一条讲的这个问题。即 C++ 并没规定函数参数求值顺序

还可以参考cert的C++安全编程规范第10条:https://www.securecoding.cert.org/confluence/display/seccode/EXP10-C.+Do+not+depend+on+the+order+of+evaluation+of+subexpressions+or+the+order+in+which+side+effects+take+place

 

所以不要这样用...

 

 

阅读更多
文章标签: 编程 编译器 c
上一篇Effect C++ 笔记 【4 Designs and Declarations】
下一篇头文件作用 以及 声明与定义的区别
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭