Linux 拨号vps windows公众号手机端

c语言为什么不能连续赋值

lewis 6年前 (2019-01-23) 阅读数 8 #程序编程
文章标签 c语言

C语言不支持连续赋值的原因是它的语法规定了赋值操作符的结合性为从右到左。这意味着在连续赋值的情况下,赋值操作符的优先级和结合性会导致不确定的结果。

例如,考虑以下代码片段:

int a, b, c;
a = b = c = 10;

根据从右到左的结合性规则,表达式 c = 10 会首先执行,并将 c 的值设置为 10。然后,表达式 b = c 会执行,并将 b 的值设置为 c 的值(即 10)。最后,表达式 a = b 会执行,并将 a 的值设置为 b 的值(即 10)。因此,最终 abc 的值都被赋值为 10。

然而,如果连续赋值是允许的,那么从左到右的结合性规则会导致不确定的结果。例如,假设代码片段被修改为:

int a, b, c;
a = b = c = 10;
a = b = (c = c + 1) + 1;

根据从左到右的结合性规则,表达式 c = c + 1 会首先执行,并将 c 的值设置为 11。然后,表达式 (c = c + 1) + 1 会执行,并将 c 的值加 1,然后再加 1。最后,表达式 b = (c = c + 1) + 1 会执行,并将 b 的值设置为 (c = c + 1) + 1 的值(即 13)。然而,这个值在执行 c = c + 1 时已经改变了。因此,最终 abc 的值将不确定。

为了避免这种不确定性和混淆,C语言规定赋值操作符的结合性为从右到左,并且不允许连续赋值。这样可以确保赋值操作的顺序是明确的,从而提高代码的可读性和可维护性。

版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门