i++ + ++i 是 UB ?

学术版

因为您比编译器聪明
by Ryo_Yamada @ 2021-05-08 09:11:00


@[Qiaoqia](/user/499996) 优先级和结合律并不规定执行顺序
by GKxx @ 2021-05-08 09:24:48


@[GKxx](/user/72071) @[约瑟夫用脑玩](/user/158948) 谢谢。
by Qiaoqia @ 2021-05-08 09:25:57


好像是因为这里 + 左右的执行顺序并不是因为优先级来比较的所以就 UB 了?
by 约瑟夫用脑玩 @ 2021-05-08 09:26:25


@[Qiaoqia](/user/499996) “后置递增运算符优先级高于前置递增运算符”指的是对于表达式```++i++```,将会理解为```++(i++)```而非```(++i)++```。这个优先级关系在您的例子中并不起作用。
by GKxx @ 2021-05-08 09:27:34


@[Qiaoqia](/user/499996) 您的想法其实来自于我们平常的一个思维定势:我们计算一个表达式```f() + g()```的时候,往往总是先算```f()```,再算```g()```,再把它们加起来;但实际上程序完全可能先算```g()```再算```f()```。
by GKxx @ 2021-05-08 09:29:22


|