gpt4 book ai didi

C - 方程的评估顺序

转载 作者:太空狗 更新时间:2023-10-29 14:56:28 25 4
gpt4 key购买 nike

我已经对评估顺序如何进行进行了大量研究 - 但无法弄清楚这个等式如何进行:

z = !x + y * z / 4 % 2 - 1

我最好的猜测是(从左到右):

z = !x + {[([y * z] / 4) % 2] - 1}

最佳答案

求值顺序和运算符优先级是两个不同的东西。

您的最佳猜测是正​​确的。所有乘法运算符 * / % 具有相同的优先级,并且从左到右绑定(bind)。附加运算符 - 具有较低的优先级。一元 ! 运算符比乘法或加法运算符绑定(bind)得更紧密。并且赋值运算符 = 的优先级非常低(但仍高于逗号运算符)。

所以这样:

z = !x + y * z / 4 % 2 - 1

等同于:

z = (!x) + (((y * z) / 4) % 2) - 1

但操作数可以合法地以任何顺序求值(除了某些运算符,如 &&||,它们强加给左- 正确的评估)。如果操作数是简单变量,这可能无关紧要,但在类似的情况下:

z = func(x) * func(y);

这两个函数调用可以按任意顺序发生。

关于C - 方程的评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com