C语言中short、int、long等被称为基本数据类型,它们的长度在不同的平台间是不确定的,因此它们不具备可移植性。
拓展:
在各个不同的平台中,都会定义类似int32_t,int16_t,size_t,time_t这样的数据类型,他们实际都是不同的整型,但是他们的长度是固定的,这是他们被称为可移植性数据类型的原因。
他们的实现原理简介如下,比如在A平台中int是4字节的,那么A平台的int32_t是这么定义的:
typedef int int32_t;
在B平台中,long long是4字节的,因此B平台的int32_t就是这么定义的:
typedef long long int32_t;
这样就保证了不管用户程序在哪个平台运行,只要定义了int32_t的数据类型,就一定是4个字节的了。