C语言的char,short,int和long类型分别有多长?

Python021

C语言的char,short,int和long类型分别有多长?,第1张

长度分别为一字节,至少两字节,至少两字节和至少4字节。除此之外,不要再依赖任何约定。

char类型的长度被定义为一个8位字节,这很简单。short类型的长度至少为两字节。在有些计算机上,对于有些编译程序,short类型的长度可能为4字节,或者更长。

int类型是一个整数的“自然”大小,其长度至少为两字节,并且至少要和short类型一样长。在16位计算机上,int类型的长度可能为两字节;在32位计算机上,可能为4字节;当64位计算机流行起来后,int类型的长度可能会达到8字节。这里说的都是“可能”,例如,早期的Motorala 68000是一种16/32位的混合型计算机,依赖于不同的命令行选项,一个68000编译程序能产生两字节长或4字节长的int类型。

long类型至少和int类型一样长(因此,它也至少和short类型一样长)。long类型的长度至少为4字节。32位计算机上的编译程序可能会使short,int和long类型的长度都为4字节——也可能不会。

如果你需要一个4字节长的整型变量,你不要想当然地以为int或long类型能满足要求,而要用typedef把一种固有的类型(一种确实存在的类型)定义为你所需要的类型,并在它的前后加上相应的#ifdef指令:

#ifdef FOUR_BYTE_LONG

typedef long int4;#endif如果你需要把一个整型变量以字节流的方式写到文件中或网络上,然后再从不同的计算机上读出来,你可能就会用到这样的类型。

如果你需要一个两字节长的整型变量,你可能会遇到一些麻烦!因为并不一定有这样的类型。但是,你总是可以把一个较小的值存放到一个由两个char类型组成的数组中。

1、在32位系统中:

char(1)字节

short(2)字节

int(2)字节

long(4)字节

char*(4)字节

int*(4)字节

int**(4)字节

2、在64位系统中:

char(1)字节

short(2)字节

int(4)字节

long(8)字节

char*(4)字节

int*(4)字节

int**(4)字节

扩展资料

在C++中short占2字节,int、float、long都占4字节,double占8字节。

指针长度和地址总线有关。因为指针记录的就是一个地址,那么32位的就是4字节,64位的就是8字节。

char占1字节,short占2字节,int、float、long都占4字节,double占8字节,任意类型的指针都占4个字节。

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统,其中函数的类型指的是函数返回值的类型。对象的类型决定该对象可取值的集合以及可以对该对象执行的操作。

C语言提供了下列几种基本数据类型

下表列出了关于字符类型的存储大小和值范围的细节:

下表列出了关于整数类型的存储大小和值范围的细节:

注:当用 long 或 short 限定符限定整型时,关键字 int 可以省路,通常很多人也习惯这样做。

下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:

注:上述内容皆适用于常见的64位系统,对于其他具体机器,可能会出现不同存储大小。

short 与 long 两个限定符的引入可以为我们提供满足实际需要的不同长度的整型数。 int 通常代表特定机器中整数的自然长度。编译器可以根据硬件性能特性自主选择合适的类型长度,但要遵循下列限制: short 与 int 类型至少为16位,二 long 类型至少位32位,并且 short 类型不得长于 int 类型,而 int 类型不得长于 long 类型。

类型限定符 signed 与 unsigned 可用于限定 char 类型或任何整型。 unsigned 类型得数总是正值或0,并遵守算数模2^n,其中n是该类型占用的位数。例如,如果 char 对象占用8位,那么 unsigned char 类型变量的取值范围是0~255,而 signed char 类型变量的取值范围则为-128~127(在采用二进制补码的机器上)。不带限定符的 char 类型对象是否带符号取决于具体的机器,但可打印字符总是正值。

long double 类型表示高精度浮点数。同整型一样,浮点型的长度也取决于具体的实现, float 、 double 与 long double 类型可以表示相同的长度,也可以表示两种或三种不同的长度。

有关这些类型长度定义的符号常量以及其他与机器和编译器有关的属性可以在标准头文件 <limits.h>与 <float.h>中找到。