`

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语言版 第2版)课后习题答案 严蔚敏 编著

    本书的内容涵盖了数据结构的各个方面,包括基本概念、数据类型、算法设计、时间复杂度分析、顺序表、链表、栈、队列、树、图等等。 第一章 绪论 数据结构是一门研究非数值计算的计算机科学,研究对象是数据的逻辑...

    数据结构c语言版课程设计.pdf

    进行了详细设计,对程序所要用到的数据类型进行了定义,包括链表节点的类型定义和宏定义。然后,对各个功能函数的具体算法进行了设计,包括创建字符串、插入、删除、KMP算法、复制、比较、求字符串的长度等操作。 ...

    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语言字符串数组和特殊矩阵PPT学习教案.pptx

    C语言字符串数组和特殊矩阵PPT学习教案 本资源主要讲解C语言中的字符串数组和特殊矩阵相关知识。...这些知识点是C语言字符串数组和特殊矩阵相关知识的基础,掌握这些知识点对于深入学习C语言和数据结构非常重要。

    c语言编写单片机技巧

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

    高级语言程序设计基础(C&C++):结构:完整的逻辑整体.ppt

    结构变量的各个成员分量在内存中占用连续存储区域,所占内存大小为结构中每个成员分量占用内存的长度之和。可以使用 sizeof 运算来求结构变量占用内存大小。sizeof 是单目运算,其功能是求出运算对象所占的内存空间...

    C语言练习题谭浩强第四版.附有答案.doc

    在 C 语言(VC 环境)中,5 种基本数据类型的存储空间长度的排列顺序是char 。因此,选项 A“char ”是正确的。 10. 选择题 10:C 语言的printf 函数 printf 函数可以输出多个参数,包括整型、字符型和字符串型。...

    数据结构报告正文.doc

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

Global site tag (gtag.js) - Google Analytics