5
A
回答
11
由于乘法运算符不是序列点,因此没有指定的顺序。序列点包括逗号运算符,完整表达式的结尾和函数调用。因此,(a)
和(b)
的评估顺序取决于编译器的实现。因此,您不应该尝试执行(a)
中的某些操作,该操作会产生您想要在(b)
中看到的副作用,以便生成有效结果。
例如:
int a=5;
int b = (a++) * (a++); //<== Don't do this!!
如果你想要的顺序点对C全上市,你可以检查出一个more thorough reference here。
3
在C90中未指定*
二元运算符的操作数的求值顺序。
下面是从C90标准的有关段落(如询问C90的问题):
(C90,6.3)“除了通过语法或指示不然以后规定(用于函数调用运算符(),& &,||,?,顿号,运营商)的子表达式的计算顺序和顺序副作用的发生都是unspecitied”
对于*
运营商,如果我们以副作用操作数为例:
c = f() * g();
实现可以调用f()
第一或g()
第一:
a = f();
b = g();
c = a * b;
或
a = g();
b = f();
c = a * b;
都是有效的翻译。
相关问题
- 1. 订购的C评价的(与*和表达++)
- 2. 订单Java表达式的评价
- 3. 订购assingment子表达式
- 4. 订购表达
- 5. 发表评论订购magento
- 6. SQL - 订购公用表表达式
- 7. 订购公用表表达式问题
- 8. 评价在C#中的特殊表达
- 9. 的Java 8 Lambda表达式评价
- 10. gnuplot的逻辑表达式评价
- 11. XQuery表达式。有关订购
- 12. 评价C++函数指针表达
- 13. 评估后订单表达式
- 14. 订单的F评价(克(),H())在C++
- 15. 评价一个Z3表达
- 16. 表达评价者选择
- 17. 表达评价2倍
- 18. 评价条件(三元)在C#插值字符串表达式$
- 19. 评价在C(新发行)后缀表达式
- 20. 条件编译和编译表达式时评价ANSI C
- 21. 订购C#中的列表
- 22. 评估c中的数学表达式#
- 23. C中的表达式评估
- 24. 评估后缀C中的表达式
- 25. 正则表达式的C#评论
- 26. 订购OR |的正则表达式Python模式
- 27. 从最高价值订购
- 28. 按价值订购阵列
- 29. 订购Wordpress样式表?
- 30. 三重平等表达的评价
[Nothing](http://en.wikipedia.org/wiki/Unspecified_behavior):) :) :) :) – dasblinkenlight 2012-02-24 20:39:30
家庭作业题目需要作业标签。 – 2012-02-24 20:41:28
@Robert:我认为没有人会在作业中提出这样的问题...... – Bruce 2012-02-24 20:42:01