gpt4 book ai didi

c - 在基于 C 的语言中,从右到左和从左到右的关联性有什么后果?

转载 作者:太空狗 更新时间:2023-10-29 16:51:44 26 4
gpt4 key购买 nike

我正在编写脚本语言,我想复制(相当标准化的)C order of operations.

尽管有一点我从未牢牢掌握为正式概念,但它是关联性。为什么有些运算符组是从左到右,有些是从右到左?

谁能给我举几个例子,说明如果规则都是从左到右或相反的话,一行代码看起来会有什么不同?或者为什么关联性是这样的,因为在我看来这只是一个任意的选择,但我认为他们有它的原因。

另外,请注意,我知道结合性是什么意思,我只是想不出任何从左到右(或反之亦然)比其他选择更好的例子

最佳答案

在大多数情况下,每个运算符都具有对该运算符最有意义的结合性。

所有非赋值二元运算符都具有从左到右的结合性。这很有用,原因很明显,英语是从左到右阅读的,因此 x + y + z 的计算与阅读方式一致。此外,对于算术运算符,语义符合我们对数学运算符用法的预期。

赋值运算符具有从右到左的结合性。从左到右的分配会有奇怪和意想不到的语义。例如,x = y = z 将导致 x 具有 y 的原始值,而 y 具有z 的原始值。预计表达式完成后所有三个变量将具有相同的值。

前缀一元运算符具有从右到左的结合性,这是有道理的,因为最接近操作数的运算符首先求值,所以在~!x中,!x 首先计算,然后将 ~ 应用于结果。如果将前缀运算符应用于从左到右的结合性,那将是真的,真的很奇怪:说 ~!x 意味着评估 ~x然后将 ! 应用于结果与我们对表达式的看法完全相反(或者,至少,大多数人对表达式的看法...)。

关于c - 在基于 C 的语言中,从右到左和从左到右的关联性有什么后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058761/

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