为什么常量语法中没有符号字符?

时间:2017-03-07 02:26:10

标签: c syntax

为什么标准中没有包含常量语法中的符号字符?

提到只有数字和符号字符仅存在于指数中

2 个答案:

答案 0 :(得分:7)

标准不会打扰数字文字前面的符号,因为它会是多余的。

语法已将符号捕获为一元加+和一元减-运算符的一部分。当你写

int a = -4;

右侧的语法可以充分描述为带有-操作数的一元减4表达式。这是标准采用的方法。

答案 1 :(得分:5)

如果-是常量-2的一部分,那么4-2将是语法错误(因为令牌始终是最长的字符序列)。此外,-2147483648- 2147483648的语义会有所不同(第一个是int,第二个是long,假设int是32位和long更长)。这两件事都会令人困惑。

如果-始终是运算符,-2147483648的语义有时会出乎意料,但更常见的x-1会按预期工作。这就是大多数编程语言(包括C)的工作原理。