关闭

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

标签: 编程编译器c
306人阅读 评论(0) 收藏 举报

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

 

所以不要这样用...

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11113次
    • 积分:210
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论