C语言基本数据类型
来源:互联网 发布:足球大师独狼捏脸数据 编辑:程序博客网 时间:2024/05/16 19:04
C语言中的基本数据类型包括:整型,字符型,浮点型(单精度型、双精度型),枚举类型。 一、整型数据: (一)整型常量:即整常数。十进制整型常数,如123、-123;八进制整数,以0开头的数是八进制数,如0123表示八进制数123等于十进制数83;十六进制整数,以0x开头的数是十六进制数,如0x123,代表十六进制数123。 (二)整型变量:整型数据在内存中是以二进制形式存放的。一般的编译系统为一个整型变量在内存中分配2个字节的存储单元(不同的编译系统为整型数据分配的字节数是不同的,Visual C++6.0 分配4个字节,Turbo C 2.0分配2个字节)。图1是数据(以10为例)在内存中实际存放的情况。 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 图1 实际上,数值是以补码(complement)表示的。一个正整数的补码和该数的原码(该数的二进制形式)相同。负数的补码是将该数的绝对值的二进制形式按位取反再加1.在存放整数的存储单元中,最左面的一位是表示符号的,该位是0,表示数值为正,该位为1则表示数值为负。 整型变量的基本类型符为int。可以根据数值的范围将变量定义为基本整型(int)、短整型(short int 或short)或长整型。 一个int型的变量值的范围为-32768~32767 [注]: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32767在内存中的表示形式,最高位为0,后15位全为1,加1后变成第一位为1,后面15位全为0。如下图 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 这是 -32768的补码形式。所以一个整型变量只能容纳-32768~32767范围内的数,这也是为什么整型变量上下限不同的原因。如果发生溢出,运行时不会报错,需要根据经验判断。 为了充分利用变量的值的范围,可以将变量定义为unsigned 类型,指定为“无符号数”,如果加上修饰符signed,则指定为“有符号数”。Signed可以省略。 如果不指定unsigned或指定signed,则存储单元中最高位代表符号。如果指定unsigned,为无符号型,存储单元中全部二进位用作存放数本身,所以无符号型数不能存放负数,其取值范围为0~65535 关于如何决定使用哪种整数类型:如果可能用到很大的数值(大于32767或小于32768),就使用long型。否则,如果空间很重要(例如有很大的数组或很多的结构),就使用short型。除此之外,就用int型。如果定义明确的溢出特征很重要而且负值无关紧要,或者希望在操作二进制位和字节时避免符号扩展的问题,就使用对应的unsigned类型。 根据ANSI C 的规定,可以在头文件<limits.h>中找到特定机器下各种数据类型的最大值和最小值。 基本类型 最小尺寸(位) 最小值(signed) 最大值(signed) 最大值(无符号) char 8 -127 127 255 short 16 -32768 32767 65535 int 16 -32768 32767 65535 long 32 -2147483648 2147483647 4294967295 二、浮点型数据 一个浮点型数据一般在内存中占4个字节(32位)。浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。 以3.14159为例 + .314159 1 数符+ 小数部分 指数 不少C语言编译系统以24位表示小数部分(包括符号),以8位表示指数部分(包括指数的符号)。小数部分占的位越多,数的有效数字越多,精度也越高。指数部分占的位数越多,则能表示的数值范围越大。 类型 位数 有效数字 数值范围 float 32 6~7 -3.4*10^-38~3.4*10^38 double 64 15~16 -1.7*10^-308~1.7*10308 long double 128 18~19 -1.2*10^-4932~1.2*10^4932 浮点数据的舍入误差问题: 由于浮点型变量是由有限的存储单元组成的,因此能提供的有效数字是有点的。在有效位以外的数字将被舍去。有可能产生一些误差。 例: #include<stdio.h> int main() { floata,b; a=123456.789e5; b=a+20; printf("%f/n",b); } 程序运行时输出b的值和a的值相等,原因是:a的值比20大很多,a+20的理论值是12345678920,而一个浮点型变量只能保证的有效数字是7位,后面的数字是无意义的,因此不能准确表示该数。运行程序得到a和b的值都是12345678848.000000,可以看到,对这个数来说,前8位是准确的,后几位是不准确的。 三、字符型数据 (一)、字符变量 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中,二十将该字符的相应的ASCII代码放到存储单元中,这样与整数的存储形式类似,所以字符型数据和整型数据之间可以通用。一个字符数据可以以字符形式输出,也可以以整数形式输出。 (二)、字符串常量 [注:]不能把一个字符串常量赋给一个字符变量。 C规定:在每一个字符串常量的结尾加一个字符串结束标志‘/0’(ASCII码为0的字符,即空操作字符,不引起任何操作动作,也不是一个可显示的字符)。 在C语言中没有专门的字符串变量(与java不同),如果想将一个字符串存放在变量中以便保存,必须使用字符数组。
- c语言-数据类型-基本数据类型
- C语言基本数据类型
- c语言基本数据类型
- C语言--基本数据类型
- C语言 -- 基本数据类型
- C语言基本数据类型
- C语言基本数据类型
- c语言基本数据类型
- C语言基本数据类型
- C语言基本数据类型
- C语言基本数据类型
- C语言-基本数据类型
- c语言基本数据类型
- C语言基本数据类型
- C语言基本数据类型
- C语言基本数据类型
- C语言基本数据类型
- C语言基本数据类型
- 为什么,控制
- Linux内存分配机制:SLAB / SLUB / SLOB
- Builder模式的误区:将复杂对象的构建进行封装,就是Builder模式了吗?
- 裸机系列——IIS_DMA
- 支持向量机(三)核函数
- C语言基本数据类型
- 根据IP查找城市
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- ACM亚洲预赛福州赛区入围晋级赛 总结
- 收集一下核函数-Kernel Function
- 回归
- 同学聚会
- Firefox 4 改进和新功能
- java面试题中的j2ee面试题(主要是Struts框架)