根据第135页K& R(以及this维基百科页面),sizeof运算符可用于计算对象的大小,并以字节大小返回size_t类型的无符号整数。由于无符号整数的最大值是2 ^ 32,如果我在一个字节大于2 ^ 32的对象上调用sizeof会发生什么,比如大小为2 ^ 34字节的东西。尺寸会返回什么?有没有办法绕过这个尺寸限制?
答案 0 :(得分:5)
我认为你错了。
"无符号整数"并不意味着"类型unsigned int
"。例如,它也可以是unsigned long long
,它可以(更大)。当然,也没有要求或规范说明unsigned int
限制为32位。
答案 1 :(得分:3)
sizeof
以字节为单位返回大小为size_t
的无符号整数
size_t
是其中一种无符号整数类型(unsigned int
,unsigned long long
,unsigned short
等的别名。哪个特定的无符号整数类型是实现定义的。
size_t
保证能够存储系统上对象的理论最大大小。因此,如果您的size_t
是32位无符号整数,则无法在系统上创建大于2 ^ 32字节的对象。相反,如果你可以创建一个大于2 ^ 32字节的对象,那么size_t
必须大于32位无符号整数,大到足以存储你可以创建的任何对象的大小。