这绝对是的情况下float
,int
和char
可以在不同设备上不同大小的,是的.它是由C编译器定义的实现.对于真正可移植的代码,您可以依赖的是:
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Run Code Online (Sandbox Code Playgroud)
那个sizeof(char) == 1
.C99中有许多类型具有特定的位大小,如果您需要保持从架构到架构的可移植类型,那么这些类型可能对您有用.
编辑:我查看了规范中的信息.第5.2.4.2.1节"整数类型的大小"是您正在寻找的:
......实施定义的值的大小(绝对值)应等于或大于所示的值......
Run Code Online (Sandbox Code Playgroud)UCHAR_MAX 255 // 2^8 - 1 USHRT_MAX 65535 // 2^16 - 1 UINT_MAX 65535 // 2^16 - 1 ULONG_MAX 4294967295 // 2^32 ? 1
等等...