繁体   English   中英

在 C 编程语言中:将 3(数字 3)分配给变量的顺序是什么? 至于哪个变量会收到 3 第一,第二和第三?

[英]In C programming Language: What order would 3 (Number 3) be assigned to the variables? As in which variable would receive 3 first, second and third?

运算符的结合性问题续:在 C 编程语言中:对于下面的问题:将 3(数字 3)分配给变量的顺序是什么? 哪个变量将接收 3 第一、第二和第三? 最终哪个变量会有 3?

问题: A = B = C = 3

进一步解释我在问什么/我试图理解这个概念:

根据我附上的说明运算符结合性的图像,赋值运算符应该从左到右不是吗?

那么应该将 3 分配给 A,然后是 B,然后是 C?

根据练习题的答案是相反的,3 被分配给 C,然后是 B,然后是 A,所以我很困惑为什么它是从右到左的? 当运算符的结合性说它是从左到右时!

表达式A = B = C = 3在 C 中被解析为A = (B = (C = 3)) 赋值运算符从右到左关联。

但是,实际赋值被指定为表达式的副作用,而这些副作用发生的顺序并未由 C 标准指定。

问题中的图像将赋值运算符的顺序显示为从左到右是错误的,应该怀疑图像的来源。 赋值运算符的关联源于 C 标准中的语法规则,其中 6.5.16 显示了一个规则:

赋值表达式一元表达式赋值运算符赋值表达式

右操作数是赋值表达式这一事实意味着在X = YY可以是另一个赋值表达式,例如Z = 4 ,但X不能。 所以A = B = C = 3必须被解析为C = 3B = …内部的赋值表达式,而B = C = 3必须是A = …内部的赋值表达式。 将此与 C 6.5.6 中的加法运算符之一的规则进行对比:

加法表达式加法表达式-乘法表达式

在该规则中,附加表达式在左侧,因此A - B - C必须分组为(A - B) - C

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM