C语言赋值运算符结合性与表达式求值
在 C 语言中,赋值运算符具有“自右向左”的结合性。这意味着在表达式中,最右边的赋值操作会首先执行,然后结果会传递给左侧的赋值操作,以此类推。
例如,表达式 a = b = c = 5
等价于 a = (b = (c = 5))
。首先,c
被赋值为 5,然后 b
被赋值为 c
的值(即 5),最后 a
被赋值为 b
的值(也是 5)。
另一个例子是表达式 a = 5 + (c = 6)
。首先,c
被赋值为 6,然后表达式 5 + 6
被计算,结果为 11,最后将 11 赋值给 a
。
需要注意的是,赋值运算符的这种结合性可能会导致一些难以理解的表达式。例如,表达式 a += a--
的值取决于 a--
的计算时机。如果 a--
在加法操作之前计算,则表达式的值为 a + (a - 1)
;如果 a--
在加法操作之后计算,则表达式的值为 (a + a) - 1
。为了避免这种歧义,建议使用括号明确指定运算顺序。
2.2MB
文件大小:
评论区