__int<size>和"char, short, int, long long int"有什么区别?

3

我很惊讶地发现我的C++编译器也支持__int8__int16__int32__int64类型;但是,我发现它们与charshortintlong long类型等效。它们之间有什么区别呢?

sizeof(__int8) == sizeof(char) == 1
sizeof(__int16) == sizeof(short) == 2
sizeof(__int32) == sizeof(int) == 4
sizeof(__int64) == sizeof(long long) == 8

能否再详细说明一下您的问题? - andy
1个回答

4
原始类型int、char、short、long等的大小是由实现定义的,可以因系统而异。您所保证的只有:
- sizeof(char) == 1 - sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
因此,许多平台提供了自己的定制、不可移植的类型,保证给定的大小。例如,我相当有信心地说,Microsoft保证__int8始终为8位,__int16始终为16位等等。
希望这可以帮助您!

你可以得到比这更多的保证——char 至少有8位,short 至少16位,long 至少32位,而 long long(如果存在)至少64位。 - Jerry Coffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接