![]() |
1
6
您的问题:
整个作业是一个
以及对
这不是关于
评估顺序
.任务具有
副作用
是 一个序列点,但它位于函数参数的求值和实际调用之间——与返回值无关。因为这里没有任何论点,所以它不适用于这种情况。 here's a quite exhaustive answer on the topic of sequence points .
解决方案当然很简单:使用两个单独的语句。陈述的结尾(
|
![]() |
2
0
其中a或b可以首先评估。 这不一定特定于特定的编译器-同一编译器可能在不同的情况下选择不同的求值顺序。 |
![]() |
3
0
不幸的是,据我所知,与Python之类的语言不同,对于计算顺序,无论是给定的编译器、编译器版本还是库,都没有定义顺序。您的代码依赖于未定义的行为。 有一些 rules 然而,编译器必须遵循的:这不是其中之一。他们给出的未定义行为示例与您的示例类似:
|
![]() |
Francisco José Letterio · 无法理解指针操作 7 年前 |
![]() |
machineghost · 等待的运算符优先级是多少? 7 年前 |
![]() |
msc · 为什么postfixed的优先级高于前缀?[副本] 7 年前 |
![]() |
mdomino · 如何防止在调整大小期间触发onscroll函数? 7 年前 |
![]() |
caisil · Java中等式“i++i”的计算顺序是什么? 7 年前 |