2
""" Sample python code representing multiple assignment """
a , b = 0 , 1
print a , b

以下代码给出输出:0 1,显然不会引发任何错误。C是否支持相同?

4

3 回答 3

1

不,C 不支持多重赋值,也不支持元组的语言级别。

a, b = 0, 1;

以上是,考虑到运算符优先级,相当于:

a, (b = 0), 1;

这相当于:

b = 0;

观看现场直播


与您的 Python 代码最接近的 C 等效项是:

a = 0, b = 1;

在这种情况下,使用赋值表达式的值是没有用的。

于 2018-09-04T15:13:41.587 回答
1

没有 C 不支持这样的多重赋值。

编译通过,因为a , b = 0 , 1被分组为a, (b = 0), 1. a并且1是无操作但仍然有效的表达式;表达式等价于

b = 0

没有a改变。

有趣的是,您可以在 C++ 中通过一些设计和对语法的微小更改来实现您想要的符号。

于 2018-09-04T15:01:09.697 回答
1

C 不像 Python 那样支持列表赋值。您需要分别分配给每个变量:

a = 0; b = 1;
于 2018-09-04T15:01:13.423 回答