-077 是正确的常量表达式
告诉个吓人^_^的知识点:其实,所有常数都没有符号。
比如 -1,其中 1 才是整型常量,而 -1 是 - 和 1 的组合表达式。
(当然,这个知识点对你无用。只有在很少情况下才需要注意,例如有点库 #define INT_MIN (-2147483647-1),而不能 #define INT_MIN -2147483648)
八进制常量 和 十进制常量 唯一的区别在于:
十进制常量(不考虑带u\l\ll等后缀的情况)类型依次扩展表为 int, long int, long long int
八进制常量(不考虑带u\l\ll等后缀的情况)类型依次扩展表为 int, unsigned int, long int, unsigned long int, long long int, unsigned long long int
说简单点,比如 ???,如果是无后缀的十进制常量,则能用int存得下它就用int,不能的话就用long,还不能的话就用long long。(可以看出全是signed类型)
而如果 ??? 是无后缀的八进制常量,则能用int存得下它就用int,不能的话就用unsigned int,还不能的话就用long,……。(可以看出既有是signed类型也有unsigned类型。)
参考:《ISO/IEC 9899:201x》 之 6.4.4.1 Integer constants