缩写类型名称 long long 与 long long int,是否符合标准?

Abbreviated type name long long vs long long int, is it standard-compliant?

我看到的大多数代码都使用缩写类型来声明变量,例如

long long x; // long long int x
short y; // short int y

我浏览了 C++11 标准(第 3.9.1 节),类型总是被完整声明,如 long long int。我找不到任何关于缩写类型的提及。我很确定这些缩写符合标准,但想确定是否确实如此。所以我的问题是上面的代码是否完全符合标准。

是的,见7.1.6.2中的table10,定义了各种说明符组合到3.9的类型的映射。

是的,这是有效的,它包含在 draft C++11 standard 部分 7.1.6.2 简单类型说明符 中:

Table 10 summarizes the valid combinations of simple-type-specifiers and the types they specify.

在 Table 10 简单类型说明符及其指定的类型中 说:

long long      “long long int”

和:

short          “short int”

是的。但是,从 C++99 开始,使用大小类型

要好得多
std::int8_t
std::int16_t
std::int32_t
std::int64_t

和他们未签名的表亲 std::uint8_t 只要有可能。然后你就知道你在处理什么了。

请注意,编译器不必支持 64 位整数类型。