C支持多种类型a,b = 0的分配,像python一样吗?

问题描述 投票:1回答:3
""" Sample python code representing multiple assignment """
a , b = 0 , 1
print a , b

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

c variable-assignment multiple-assignment
3个回答
1
投票

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

a = 0; b = 1;

1
投票

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

a, b = 0, 1;

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

a, (b = 0), 1;

这相当于:

b = 0;

live on coliru


与Python代码最接近的C等价物是:

a = 0, b = 1;

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


1
投票

No C不支持这样的多个赋值。

a , b = 0 , 1被归类为a, (b = 0), 1以来的编译过程。 a1是无操作但仍然有效的表达;表达式相当于

b = 0

a没有改变。

有趣的是,您可以通过一些设计和语法的微小变化在C ++中实现所需的符号。

© www.soinside.com 2019 - 2024. All rights reserved.