我可以在 C++ 标准的哪个位置读取整型文字的类型?
Where in the C++ standard can I read what type an integer literal is?
在"lexical conventions/Literals"章中只是简单的提到了没有后缀,可以是int,long int,long long int中的任意一个。它在哪里明确声明它是实现定义的,或者 - 如果不是 - 它是什么类型?
在lex.icon
的第二段,有一个table。在 table 之前它说
The type of an integer literal is the first of the corresponding list in Table 6 in which its value can be represented.
然后在table的十进制常量下,依次列出int
、long int
、long long int
。所以根据上面的说法,如果可以用一个int
表示,那么就是一个int
。如果不能用int
表示,但可以用long int
表示,那就是long int
。如果它不能用 long int
表示但可以用 long long int
表示,那么它就是 long long int
.
八进制和十六进制常量有不同的规则,允许它们是无符号类型,优先顺序为int
、unsigned int
、long int
、unsigned long int
, long long int
, unsigned long long int
.
在"lexical conventions/Literals"章中只是简单的提到了没有后缀,可以是int,long int,long long int中的任意一个。它在哪里明确声明它是实现定义的,或者 - 如果不是 - 它是什么类型?
在lex.icon
的第二段,有一个table。在 table 之前它说
The type of an integer literal is the first of the corresponding list in Table 6 in which its value can be represented.
然后在table的十进制常量下,依次列出int
、long int
、long long int
。所以根据上面的说法,如果可以用一个int
表示,那么就是一个int
。如果不能用int
表示,但可以用long int
表示,那就是long int
。如果它不能用 long int
表示但可以用 long long int
表示,那么它就是 long long int
.
八进制和十六进制常量有不同的规则,允许它们是无符号类型,优先顺序为int
、unsigned int
、long int
、unsigned long int
, long long int
, unsigned long long int
.