该标准不会对数字文字前面的符号感到烦恼,因为它会是多余的.
语法已经将符号捕获为一元加+和一元减-运算符的一部分.当你写作
int a = -4;
Run Code Online (Sandbox Code Playgroud)
右侧的语法可以充分描述为-带有操作数的一元减去表达式4.这是标准采用的方法.
如果-是常量的一部分,-2那么4-2将是一个语法错误(因为令牌是始终的最长可能的序列).此外,语义-2147483648和- 2147483648将是不同的(第一个将是int和第二个a long,假设int是32位并且long更长).这两件事都会令人困惑.
如果-它始终是一个运算符,那么语义-2147483648有时会出乎意料,但更常见的x-1是按预期工作.这就是大多数编程语言(包括C)的工作方式.