C语言中的数据类型
C语言中可以使用的数据类型:
C语言程序中所使用的每个数据都属于其中某一种类型,在编程时要正确地定义和使用数据。
数据的存储
整型数据的存储
计算机处理的所有信息都是以二进制形式表示,即数据的存储和计算都采用二进制。若把一种信息比作一种物品,那么计算机的存储位置便好似一个储物器,将我们的信息都放在计算机里边。那么我们应当如何与我们的储物器沟通呢?
答案是--二进制!
对于整型数据,假设每个整数在内存中占用两个字节存储( 1字节(byte)=8个二进制位(bits)
):
数值可以采用原码、反码和补码等不同方法表示。为了便于计算机内的计算,我们用补码表示数值。
以1为例:1的补码 0 000 0000 0000 0001
注意:最左边位(最高位)是符号位(+或-),0代表正数,1代表负数。
正数
正数的原码、反码和补码相同,即符号位是0,其余各位表示数值:
2^6的补码: 0 000 0000 0100 0000
两个字节的存储单元所能表达的最大正数是2^15-1,即32767: 0 111 1111 1111 1111
负数
负数的原码、反码和补码各不相同,以-32767为例:
原码:符号位是1,其余各位表示数值的绝对值, 1 111 1111 1111 1111
反码:符号位是1,其余各位对原码取反, 1 000 0000 0000 0000
补码:反码加1, 1 000 0000 0000 0001
减1,得到-32768,这是两个字节的存储单位能表示的最小负数。
每个整数都有一定的取值范围,若假设整型数据在内存中占用两个字节的存储,它的取值范围是[-32768,32767]。
实型数据的存储
存储实型数据时,分为符号位、阶码和尾数三部分。如: -1.2345e+02
是负数、阶码是2、尾数是1.2345。实型数据的存储我们暂不详细讨论。
字符型数据的存储
每个字符在内存中占用一个字节,存储它的ASCII码。如字符型常量'A'的ASCII码为65,在内存中用 0100 0001
的形式存放。
当我们定义一个字符型变量时,用 char y = 'A'
或 char y = 65
输出的都是A。
注意:
- 若是输出能够显示的字符,用以上两种方式都可以;
- 若是输出不能显示的字符,如回车,空格,是肉眼不能知道是否输出的字符,这时我们就可以用ASCII码输出。如:
char y = 1
,这时我们输出的便是“标题开始”。
下面附一张ASCII码表:
基本数据类型
C语言有整型、字符型和实型3种基本数据类型,如下表1:
类别 | 名称 | 类型名 | 数据长度 | 取值范围 |
---|---|---|---|---|
[有符号]整型 | int | 32位 | -2147483648~2147483647(-2^31~2^31-1) | |
[有符号]短整型 | [short]int | 16位 | -32768~32767 | |
整 | [有符号]长整型 | [long]int | 32位 | -2147483648~2147483647(-2^31~2^31-1) |
型 | 无符号整型 | unsigned[int] | 32位 | 0~4294967295(0~2^32-1) |
无符号短整型 | unsigned short[int] | 16位 | 0~65535(0~2^16-1) | |
无符号长整型 | unsigned long[int] | 32位 | 4294967295(0~2^32-1) | |
字符型 | 字符型 | char | 8位 | 0~255 |
实型(浮点型) | 单精度浮点型 | float | 32位 | 约±(10^-38~10^38) |
双精度浮点型 | double | 64位 | 约±(10^-308~10^308) |
整型与整型常量(整数)
整型
整型是指不存在小数部分的数据类型。为了处理不同取值范围的整数,C语言提供了扩展的整数类型,即上表格所示的六种整型。
整型数据分为有符号和无符号。无符号的整型数据即指不带正负号的整型,即0或正数,所有位都用来表示数值。如2^15: 1000 0000 0000 0000
.
- 如上述表格1:C语言规定各种整型的长度:short型不长于int型,long型不短于int型。
整型常量(整数,取值不超过上表中列出的整型数据的范围)
整数的表示
C语言中整数有三种表现形式,分别是十进制、八进制和十六进制,如下表2:
组成部分 | 注意 | 例子 | 分别用十进制数值表示 | |
---|---|---|---|---|
十进制 | +、-、数字0~9 | 首位数字不能是0 | 10 | 10 |
八进制 | +、-、数字0~7 | 首位数字必须是0 | 010 | 8 |
十六进制 | +、-、数字0~9、字母a~f或字母A~F | 表格 | 0x10 | 16 |
对于八进制数和十六进制数
- 念法:和十进制数不同,如
16
八进制数和十六进制数都念一六
。 任何一个整数都可以用这三种表示方法表示,但并不影响它的数值。
整数的类型
根据整数后的字母后缀来确定:
- 有后缀:
L或l表示long型常量,如:-12L
,012344556l
。
后缀U或u表示unsigned型常量,如:-12U
,012344556u
。 没有后缀:
根据表1的取值范围来确定。
如:取值范围在-32768~32767
的是短整型。字符型与字符型常量
字符型(内存中占有1个字节)
- 可以写成字符常量形式,也可以用相应的ASCII码来表示。如:用
char y = 'A'
或char y = 65
输出的都是A。 - 字符型变量的值可以是字符或整数,可以被定义为整型变量;同时,整型变量的值,也可以是字符型数据,可以被定义为字符型变量。此时需注意整形数据的取值范围是有效的。
字符型常量
字符型常量指单个字符,用一对单引号及其所括起来的字符表示,如: 'a'
或'A'
或 ?
;
也可以用双引号表示字符串,如: "This is a char"
.
转义字符(由"\"和一个字符或数字组成,也是字符常量)
像回车符、退格符等控制码不能在屏幕上显示,也无法从键盘上输入,便可以用转义字符表示。
一些常见转义字符如表3:
字符 | 含义 |
---|---|
\n | 换行 |
\t | 横向跳格 |
\ | 反斜杠 |
\" | 双引号 |
\' | 单引号 |
\ddd | 1~3位八进制整数所代表的字符 |
\xhh | 1~2位十六进制整数所代表的字符 |
如: \x41
表示ASCII码是十六进制数41的字符,即字母'A'。
实型与实型常量
实型
实型类型又称浮点型,指存在小数部分的数。
实型数据有单精度浮点型和双精度浮点型两种,它们表示数值的方法一样,主要区别在于数据的精度和取值范围有所不同。
- 相比而言,双精度类型数据的精度高,取值范围大。
实数在计算机中只能近似表示,运算中也会产生误差。
它们的区别如下表:字节 有效数字 取值范围 单精度浮点型 4个 7~8位 ±(10^-38~10^38) 双精度浮点型 8个 15~16位 ±(10^-308~10^308)
实型常量
实型常量即常说的实数,又称为浮点数,可以用十进制浮点表示法和科学计数法表示法表示。
组成部分 | 注意 | 别称 | 正确例子 | 错误例子 | |
---|---|---|---|---|---|
浮点表示法 | +、-、数字0~9和小数点 | 必须有小数点,并且小数点的前后至少一边要有数字 | 实数的小数形式 | 3.14 | 0.0 |
科学计数法 | +、-、数字和字母e或E | e是指数的标志,在e之前要有数据,e之后的指数只能是整数 | 实数的指数形式 | 6.026E-27 | E-5 |
- 实型常量都是双精度浮点型.
好啦!今天的内容就到这里,我们五一假后见!