Я удивлен, увидев, что мой компилятор C ++ поддерживает __int8
, __int16
, __int32
, а также __int64
; Но я просто вижу, что они эквивалентны char
, short
, int
, а также long long
, В чем разница между ними?
sizeof(__int8) == sizeof(char) == 1
sizeof(__int16) == sizeof(short) == 2
sizeof(__int32) == sizeof(int) == 4
sizeof(__int64) == sizeof(long long) == 8
Размеры примитивных типов int
, char
, short
, long
и т. д. определяются реализацией и могут варьироваться от системы к системе. Все, что вам гарантировано, это
sizeof(char) == 1
, а такжеsizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
,В результате многие платформы предоставляют свои собственные непереносимые типы, которые гарантированно будут иметь заданные размеры. Например, я довольно уверен, что Microsoft гарантирует, что __int8
всегда восемь бит, __int16
всегда 16 бит и т. д.
Надеюсь это поможет!
Других решений пока нет …