24

在 C++ 中,您可以通过这样做来进行多重赋值

x = y = z = 10;

然而很多人告诉我这是一种糟糕的风格,我不应该在没有给我理由的情况下使用它。

有人可以向我解释为什么这被认为是一种不好的风格吗?

4

3 回答 3

37

试试这些定义:

int x;
bool y;
int z;
x = y = z = 10;

并对 x 的值感到惊讶。

于 2012-12-31T22:00:18.137 回答
29

这并不是天生不好的风格,但是您通常可以通过每行只执行一个赋值并让编译器优化器整理出来来使代码更清晰。如果您使用多重赋值样式,那么有时可能不清楚x = y = z = 10;是故意的还是类似x = y = z + 10;. 通过始终将自己限制为每个语句一个作业,您可以在出现拼写错误时变得明显。

于 2012-12-31T21:49:07.740 回答
9

只要您知道它们都应该是相同的值,就没有问题。

例如

改变

x = y = z = 10;

x = y = z = 15;

很容易。

但是,如果它们任意相同,则单独的分配可以传达这一点,并且更容易单独更改以进行测试。

x = 10;
y = 10;
z = 10;

x = 10;
y = 15;
z = 10;

总比不得不拆线好。

关键是你告诉下一个程序员看看代码(或者你自己在 6 个月后)。

于 2012-12-31T21:59:51.553 回答