前言
通过之前的学习,大家应该发现在定义变量时需要指定变量的类型,在计算机中,数据时存放在存储单元中的,时具体存在的,存储单元是由有限个字节构成的,每个存储单元存放数据的范围是有限的。
所谓类型,是对数据分配存储单元的安排,包括存储单元的长度(占多少个字节)以及数据的存储形式。
一.数据类型分类
今天主要讲解C语言中最常用的整型数据,字符型数据,浮点型数据。
二.整型数据
先给大家看一张表。
1.基本整型(int)
编译系统分配给int类型一般为4个字节(32位),在存储单元的存储方式是:用整数的补码形式存放。
这里再介绍一下原码,反码,补码。
原码:在数值前直接加一符号位的表示法,对于8位二进制来说:
[+7]原= 0 0000111 [-7]原= 1 0000111
反码:正数的反码与原码相同;负数的反码,符号位为“1”,数值部分按位取反。
[+7]反= 0 0000111 [-7]反= 1 1111000
补码:正数的补码和原码相同;负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1,也就是“反码+1”。
[+7]补= 0 0000111 [-7]补= 1 1111001
其中正整数的原码、反码和补码都一样。
2.短整型(short int)
编译系统分配给short int类型一般为2个字节(16位),在存储单元的存储方式是:与整型相同。
3.长整型(long int)
编译系统分配给long int类型一般为4个字节(32位)。
4.双长整型 (long long int)
编译系统分配给long long int类型一般为8个字节(64位)。
c标准没有具体规定各种类型数据所占用存储单元的长度,是由各编译软件系统自行决定的。
#include<stdio.h>
int main()
{
int a;
a=sizeof(int);
printf("%d\n",a);
return 0;
}
4
PS C:\csay\cyuyan>
大家可以使用sizeof查询数据类型的字节数。通过上面的代码可以知道int的字节数为4。
三.字符型数据
1.字符和字符代码
字符和字符代码不是任意写一个字符程序都能识别的,只能使用系统的字符集中的字符,目前大多数系统采用的是ASCII字符集。
2.字符变量
字符变量是用类型符char定,如:
char c = '?' ;
'?' 的ASCII的代码是63,相当于把63赋值给变量c。
c是字符变量,实质上是一个字节的整型变量,当时它常用来存放字符,所以称为字符变量,可以把0~127之间的整数赋给一个字符变量。
输出字符变量的值时,可以选择整数形式输出,也可以以字符形式输出。如:
#include<stdio.h>
int main()
{
char c = 'A';
printf("%d %c",c,c);
return 0;
}
65 A
PS C:\csay\cyuyan>
四.浮点型数据
浮点型数据是用来表示具有小数点的实数。浮点数类型把包括float(单精度浮点型)、double(双精度浮点数)、long double(长双精度浮点型)。
1.float(单精度浮点型)
编译系统分配给float类型一般为4个字节(32位),数值以规范化的二进制数指数形式放在存储单元中。
2.double(双精度浮点数)
为了扩大能表示的数值范围,用8个字节存储一个double型数据,再C语言中进行浮点数运算时,将float型自动转换为double型,然后进行运算。
3.long double(长双精度浮点型)
不通的编译系统对它的处理不同,一般为8字节和16字节。