为什么C解析器不允许整数文字的数字之间的空格?

我希望它会破坏其他一些解析,但这并不会立即引起人们的注意……

例如,如果我这样说:

#include  int main() { int i = 10 000; printf("%d\n", i); return 0; } 

我的编译器说:

 ctest.c:5: error: expected ',' or ';' before numeric constant 

我认为它将是一个特征,即用数千个分隔符“眼睛解析”大整数更容易。 我正在使用最近的GCC并假设其他编译器/解析器/词法分析器就是这种情况; 无论哪个是物体。

语言不允许这样(整数文字是一个标记,插入的空格将其分成两个标记)但是通过将初始化程序表达为表达式来计算文字通常几乎没有花费:

 int i = 10 * 1000; /* ten thousand */ 

那么它会与为c ++提议的空间运算符重载的能力相冲突。

(是的,我知道这不是一个严肃的提议)。

编辑:这只是一个愚蠢的事情,我的真实评论是下面的部分

对我来说,将空格放入数字的能力会增强和降低可读性。 如果您需要自己阅读数字,这可能会更容易。 但我认为它也会使代码读取速度变慢,因为你必须在心理上采取一个额外的步骤来解析头脑中的代码,而不是只看到令牌的末尾。 假设你在阅读它时对数字的实际价值不感兴趣。

我不相信有任何技术上的原因无法做到这一点,更多的是人们将数字视为一个不可分割的标记,所以应该这样写。 我不得不说,我不知道为什么,但是看到数字在代码中被破坏会让我感到恼火。 我不能说这是有充分理由的,但它仍然是真的:)它可能正是我习惯的。