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

原创 2011年01月21日 22:01:00

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

 

所以不要这样用...

 

 

IE9中X-UA-Compatible失效的问题与值: 对象为 null 或未定义

好端端的W3C标准页面被硬生生渲染成IE5,惨不忍睹。而在F12工具中强制调成IE9标准渲染模式,全部正常。于是研究了一下问题在哪。 关于X-UA-Compatible和IE的Quirks Mo...

C/C++求值顺序不定问题

最近看C语言的书,书上曰: 对于 main() { int i=8; printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--); } 如按照从右...

关于C/C++中表达式求值顺序的深层次问题

裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 最近有位不相识的朋友发ema...

'AjaxPro'未定义错误的原因&javascript顺序执行&AjaxPro机制

转载: 呵呵,终于明白'AjaxPro'未定义错误的原因了!!        先从javascript的执行方式说起吧!我用C#比较熟,在C#里面任何一个变量或函数的位置是无关紧要的,比如说下面pub...
  • lz00728
  • lz00728
  • 2011年07月15日 12:27
  • 781

「C++ Primer」3.22 迭代器未定义操作导致段错误问题

/* Revise the loop that printed the first paragraph in text * to instead change the elements in text...

编程中的“未定义行为”问题

在计算机程序设计中,未定义行为(undefined behavior)是指行为不可预测的计算机代码。(尤其是在c语言中中) 因为简化标准,所以标准规定某些操作是未定义的,意味着:程序员不能够预测会发...

gcc编译时对'xxxx'未定义的引用问题

这个主要的原因是gcc编译的时候,各个文件依赖顺序的问题。 在gcc编译的时候,如果文件a依赖于文件b,那么编译的时候必须把a放前面,b放后面。 例如:在main.c中使用了temp,那么编译的时候必...

C#调用百度地图API入门&解决BMap未定义问题

本文主要是最近帮助好友研究JavaScript的百度地图API,同时显示到C# Winform界面。同时遇到了BMap未定义的错误(BMap is not defined)及解决方法。以前写过基于An...

解决IE6,7,8JSON.stringify JSON 未定义问题

1、解决IE6 IE7,IE8 JSON.stringify JSON 未定义问题 调用的页面里引用json2.js即可解决问题(推荐方法)。 即: json2....

ubuntu gcc编译时对’xxxx’未定义的引用问题

http://www.cnblogs.com/oloroso/p/4688426.html gcc编译时对’xxxx’未定义的引用问题 原因解决办法 gcc 依赖顺序问题 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:“未定义”的求值顺序问题
举报原因:
原因补充:

(最多只允许输入30个字)