C 是否像 python 那样支持 a , b = 0, 1 类型的多重赋值?

Does C support multiple assignment of the type a , b = 0, 1 like python does?

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

以下代码给出了输出: 0 1 并且显然不会引发任何错误。 C支持吗?

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

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

b = 0

a 未更改。

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

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

a = 0; b = 1;

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

a, b = 0, 1;

以上是,考虑到operator precedence,相当于:

a, (b = 0), 1;

相当于:

b = 0;

参见 live on coliru


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

a = 0, b = 1;

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