(a,b)=(1,2)是什么意思?

时间:2019-09-14 22:41:39

标签: c#

此代码:

(int a,int b) = (1,0)
(a, m) = (m, a % m);
(x, y) = (y, x - q * y);

这有何不同:

int a=1;
int b=0;
a = m;
m = a%m;
x = y;
y = x-q*y;

为什么不一样? 您怎么用普通的方式写上没有括号?

1 个答案:

答案 0 :(得分:2)

首先,在第一种情况下没有非正常现象。正如@MickyD所引用的,您应该阅读有关tuples的信息。这个版本更加简洁,所以我实际上更喜欢它。

更重要的是,这些代码段不相等。比较

(a, m) = (m, a % m);

vs

a = m;
m = a%m;

在第二种情况下,首先评估a,这意味着m最终将变成0

a = m; // now a equals m
m = a%m; // m := a % m = m % m = 0

在第一种情况下,元组的所有部分都是同时计算的(例如在Python中)。换句话说,就结果而言,它等效于以下代码:

int temp = a;
a = m;
m = temp % m;