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

来源:互联网 发布:门店销售软件 编辑:程序博客网 时间:2024/04/30 23:07

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

 

所以不要这样用...