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

dpj*_*dpj 0 c

我希望它会打破其他一些解析,但这并不会立即浮出水面......

例如,如果我这样说:

#include <stdio.h>
int main()
{
    int i = 10 000;
    printf("%d\n", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的编译器说:

ctest.c:5: error: expected ‘,’ or ‘;’ before numeric constant
Run Code Online (Sandbox Code Playgroud)

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

CB *_*ley 6

该语言不允许这样(整数文字是一个标记,插入的空格将其分成两个标记)但是通常将初始化程序表达为一个计算文字的表达式,几乎不会产生任何费用:

int i = 10 * 1000; /* ten thousand */
Run Code Online (Sandbox Code Playgroud)

  • @CharlesBailey你的'10*000`解决方案很好但是`41196312`怎么样?我不是'41*1000*1000 + 196*1000 + 312`的粉丝.是否会考虑为解析器添加不必要的复杂性?也许,对代码中的魔术数字的情绪? (2认同)