为什么存在 x++ 和 ++x,并且 x += 2 而不是 x =+ 2?

Why does x++ and ++x exist, and x += 2 but not x =+ 2?

在 C++(以及其他编程语言)中,(x++) 将 x 计算为令牌,然后将 x 递增 1,而 (++x) 首先将 x 递增,然后将 x 的新值计算为令牌。

类似地,(x += 2) 存在(将 x 计算为标记,然后将 x 递增 2)。然而,(x =+ 2) 并没有归结为将 x 递增 2 然后将 x 的新值评估为标记,而是评估为 x = +2.

为了区分 x =+ 2x = +2,适当的间距是必要的,但我不明白为什么会有问题。

为什么(x =+ 2)没有设计成执行两个前置自增的功能?

编辑:这样做的目的不是为了看起来漂亮,而是为了方便一些可能出现循环的情况。

我记得 K&R 书(至少是第一版,我现在手边没有)说 =+ 最初打算成为 C 中的运算符,但它含糊不清解析。所以选择了+=。在空格通常不重要的语言中,要求空格消除歧义并不是非常友好。

这是因为人们很容易将 x=+2 解释为 x= positive 2。

Why is (x =+ 2) not designed to perform the function of two (++x) expressions?

因为 C++ 中的空格并不重要(模数分隔关键字,如 class)。如果这两个语句的含义截然不同,那将是语言的一个非常明显的突破:

x =+ 2;
x = +2;

让我们不要把C++变成Python。