跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:c:tips:evaluation_order
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 求值顺序(Evaluation order) ====== C语言中,某些运算的顺序是确定的,而其他运算的顺序则不确定。 例如表达式: <code c> f(a) < f(b) && f(c) > f(d) </code> 这里%%f(a) < f(b)%%会先计算,根据比较结果才决定是否执行%%f(c) > f(d)%%(参见:[[.:logical_and_or|逻辑与/或操作符的注意事项]])。但在%%f(a) < f(b)%%这个子表达式中,编译器可能先计算f(a),也可能先计算f(b),或者两者同时并行求值(某些机器上),此时求值顺序是不确定的。 具体的说,只有如下四个操作符规定了求值顺序: - 逻辑与&&; - 逻辑或||; - ?:三元条件表达式; - ,逗号表达式。 需要注意的是,包含逗号的函数参数列表并不是逗号表达式(此时的逗号是分隔符),参数之间的求值顺序是不确定的。如函数f(a, b),先计算a还是b是不确定的。 在实际编程过程中,对没有明确规定求值顺序的操作要特别注意,不能主观假设某种求值顺序。 {{tag>C语言}}
computer/c/tips/evaluation_order.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部