sizeof(int)> = 2和sizeof(long)> = 4:对于任何实现,这总是如此吗?

Fra*_*uet 3 c++

B.Stroustrup在他的新书(TCPL第4版)第6.2.8节中说明如下:

C++的基本类型的某些方面(例如int的大小)是实现定义的(第6.1节).

稍后,在第150页中,我们有以下示例:

int_least16_t y; // at least 2 bytes (just like int)
int_least32_t yy // at least 4 bytes (just like long)
Run Code Online (Sandbox Code Playgroud)

我对这两个注释的解释是int(或a long)的大小是实现定义的,但它们的最小大小总是分别等于2和4个字节.也就是说,sizeof(int) >= 2而且sizeof(long) >= 4,对任何一种方法.

首先,这是正确的吗?如果是这样,标准中的内容在哪里?

Cor*_*lks 10

不,并非总是如此.它可能char是64位类型,在这种情况下sizeof(int),sizeof(long)可能都是1.

你保证什么,不过,是sizeof(int) * CHAR_BIT >= 16sizeof(long) * CHAR_BIT >= 32,因为intlong需要至少分别为16位和32位.