`

C语言中各个数据类型的长度

 
阅读更多

C语言的基本数据类型有以下几个:
int 整型
char 字符型
float 单精度浮点型
double 双精度浮点型
另外,在基本数据类型基础上附加一些限定词, 得到扩充的数据类型。short,long可以应用到整型, unsigned可以应用到整型和字符型:
short int(或short) 短整型
long int(或long) 长整型
unsigned int 无符号整型
unsigned short 无符号短整型
unsigned long 无符号长整型
unsigned char 无符号字符型

 

 

整型
    C标准没有规定各类数据所占内存字节数,通常一个int型数据所占内存与计算机字长大小相同,为16位或32位,short型数据通常占16位,long型数据是32位。每种编译器可以为硬件选择适合的长度,仅受一些限制,如short 和int 型数据至少占16位,long型至少占32位, short型数据不能超过int型数据的字节数,而int型不长于long 型。
    无符号的数总是正数或零,服从数学式子2n,其中n是这种类型的二进制位数。例如,int型是16位,它的数据取值范围在-32768-32767之间,而unsigned int型数据取值范围在0-65535之间。下表列出了不同机器上整型数据的取值范围。 

 

16位机器

32位机器

数据类型

所占位数

取值范围

所占位数

取值范围

int

16

-32768~32767

32

-21亿~21亿

short

16

-32768~32767

16

-32768~32767

long

32

-21亿~21亿

32

-21亿~21亿

unsigned int

16

0~65535

32

0~42亿

unsigned short

16

0~65535

16

0~65535

unsigned long

32

0~42亿

32

0~42亿


字符型
    字符型数据存储时占用8位,它实际存储的是字符对应ASCII码(美国标准信息交换码American Standard Code for Information Interchange)。如一个char型数据'A',其ASCII码为65,故实际存储的内容是65。unsigued char型数据取值范围为0-255,char型数据取值范围为-128-127。字符有符号或无符号是依赖于机器的,但是可打印的字符总是正的。
    由于在内存中字符型数据是以ASCII码形式存放,其形式与整型类似,因而在C语言中,字符型数据与整型数据可以通用,字符型数据所有的性质与一字节整型量相同。

 

 

**********************************************************************************

 

 

C/C++基本数据类型(2008-4-1 21:48:00)

【收藏】 【评论】 【打印】 【关闭】

标签:C C++ 数据类型 

学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。

         ANSI C/C++基本数据类型:

Type

Size

数值范围

无值型void

0 byte

无值域

布尔型bool    

1 byte

true   false

有符号短整型short [int] /signed short [int]

2 byte

-32768~32767

无符号短整型unsigned short [int]  

2 byte

0~65535

有符号整型int /signed [int]

4 byte

-2147483648~2147483647

无符号整型unsigned [int]

4 byte

0~4294967295

有符号长整型long [int]/signed long [int]

4 byte

-2147483648~2147483647

无符号长整型unsigned long [int]

4 byte

0~4294967295

long long

8 byte

0~18446744073709552000

有符号字符型char/signed char

1 byte

-128~127

无符号字符型unsigned char

1 byte

0~255

宽字符型wchar_t (unsigned short.)

2 byte

0~65535

单精度浮点型float 

4 byte

-3.4E-38~3.4E+38

双精度浮点型double

8 byte

1.7E-308~1.7E+308

long double

8 byte

 

说明:

1)类型修饰符signedunsigned用于修饰字符型和整形。

2)类型修饰符shortlong用于修饰字符型和整形。

3)当用signedunsignedshortlong修饰int整形时,int可省略。

4)其中boolwchar_tC++特有的。

5)除上表以外,C/C++都可以自定义枚举enum、联合unionstruct结构体类型。

6)以上sizeof通过Windows XP 32位平台测试,其中某些类型数据的字节数和数值范围由操作系统和编译平台决定。比如16位机上,sizeof(int) = 2,而32位机上sizeof(int) = 432位机上sizeof(long) = 4,而64位机上sizeof(long) = 8。除此之外,注意64位机上的pointer8byte

7)void的字面意思是“无类型”,不能用来定义变量。void真正发挥的作用在于:<1> 对函数返回和函数参数的限定,例如自定义既不带参数也无返回值的函数void MyFunc(void);<2>定义无类型通用指针void *,指向任何类型的数据。

8)标准C++库及STL还提供了通用数据结构:字符串类string;向量类模板vector;双端队列类模板deque;链表类模板list;容器适配器堆栈类stack(实现先进后出的操作);容器适配器队列类queue(实现先进先出的操作);集合类set;多重集合类multiset;映射类map;多重映射类multimap;位集合bitset;迭代器iterator (类似指针的功能,对容器的内容进行访问)

9在标准c++中,int的定义长度要依靠你的机器的字长,也就是说,如果你的机器是32位的,int的长度为32位,如果你的机器是64位的,那么int的标准长度就是64位,而vc__int64是为在32机位机器长实现64位长度的整形数。

10)关于32位平台下的intlong

long从字面上看,应该是64位才更合理,把long当成32位实在是一个历史的包袱。像C#那样新起炉灶的程序语言,由于没有需要支持老代码的问题,就把long当作64位来处理了。

32位平台下,long是相对short而言,longshort)类型是longshort int类型的简称,sizeof(long) = sizeof(int) = 4intlong的范围虽然一样,但输入输出格式不同,printf int的格式为%d,而printf long的格式为%ld

考虑到程序的可移植性,还是要将他们区分开来。但当要求的数值范围为4byte时,建议使用int类型,因为第一版的C语言只有一种类型,那就是int

11)在Win32 APIMFC中为了使类型名称在语意上更明了,对以上基本类型进行了大量的typedef。例如WINDEF.H中的BYTE,WORD,DWORD

分享到:
评论

相关推荐

    C语言的基础教程 TXT格式

    逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字,标识符之间必须要有一个以上的空格符作间隔, 否则将会出现语法错误,例如把int a;写成 inta;C编译器会把inta...

    C语言程序设计标准教程

     在C语言中,文件操作都是由库函数来完成的。 在本章内将介绍主要的文件操作函数。 文件打开函数fopen  fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,...

    上海电机学院C语言实训答案

    (29)某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。...

    编译原理 C语言实现词法分析

    在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并查填适当的信息表。 经过词法分析后,源程序字符串(源程序的外部表示)被翻译成具有...

    C语言标准教程第一章 C语言概论

    因此,这两个函数在括号中的参数表都由以下两部分组成: “格式控制串”,参数表 格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。各种类型的格式表示法可参阅第三章。在printf函数中...

    《你必须知道的495个C语言问题》

    1.8 如何在C中实现不透明(抽象)数据类型? 5 1.9 如何生成“半全局变量”,就是那种只能被部分源文件中的部分函数访问的变量? 5 存储类型 6 1.10 同一个静态(static)函数或变量的所有声明都必须包含static...

    C语言 数据结构 顺序表的操作.doc

    /* 表元素类型 int */ (2)在第(1)题的基础上,void ListInsert(int k,ListItem x,List L),实现在表L的第k 个位置插入 x。 (3)编写函数void PrintList(List L)实现输出顺序表中的元素。 (4)编写删除函数...

    c语言编写单片机技巧

    答:对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其...

    数据结构报告正文.doc

    建立二叉排序树并对其进行查找,包括成功和不成功两种情况,并给出查找长度。 1.2.1数据结构课程设计测试数据。 由学生依据软件工程的测试技术自己确定。注意测试边界数据。 1.2.2数据结构课程设计的选作内容。 ...

    C程序设计语言第2版新版[PDF]

    2.2 数据类型及长度 2.3 常量 2.4 声明 2.5 算术运算符 2.6 关系运算符与逻辑运算符 2.7 类型转换 2.8 自增运算符与自减运算符 2.9 按位运算符 2.10 赋值运算符与表达式 2.11 条件表达式 2.12 运算符优先级与求值...

    C程序设计语言[第2版].pdf

    2.2 数据类型及长度 2.3 常量 2.4 声明 2.5 算术运算符 2.6 关系运算符与逻辑运算符 2.7 类型转换 2.8 自增运算符与自减运算符 2.9 按位运算符 2.10 赋值运算符与表达式 2.11 条件表达式 2.12 运算符优先级与求值...

    C程序设计语言(第2版·新版中文)

    2.2 数据类型及长度 2.3 常量 2.4 声明 2.5 算术运算符 2.6 关系运算符与逻辑运算符 2.7 类型转换 2.8 自增运算符与自减运算符 2.9 按位运算符 2.10 赋值运算符与表达式 2.11 条件表达式 2.12 运算符...

Global site tag (gtag.js) - Google Analytics