C语言基本数据类型
![](https://img2020.cnblogs.com/blog/1872241/202009/1872241-20200925230359382-1832063141.png)常量、变量和用户标志符
常量
常量是在运行过程中其值不发生变化的量。
常量可以是任何基本类型的值(整型、实型、字符型以及字符串常量)。
可以使用define命令定义符号常量,如:#define PI 3.1415926。
变量
变量是在程序运行的过程中,其值可以在一定范围内发生变化的量。
C语言中,要求对所有用到的变量做类型强制定义。变量类型定义后,即可分配内存空间。
变量名实质上是计算机内存单元的命名,变量的地址就是该内存单元的开始地址。
在程序运行中,通过变量名来引用变量的值,变量值存储在内存中。
标识符
标志符主要用来表示变量名、符号常量名、函数名等。
合法的标识符只能由字母、数字和下划线三种字符组成,并且第一个字符不能为数字。
标识符一般分为三类:关键字、预定义标识符、用户定义标识符。
如果用户标志符与关键字相同,程序将在编译时报错;如果与预定义标识符相同,该预定义标识符会失去原定含义,可能会引发运行时的错误。
整型
整型常量
整型常量就是一个整数,它有三种表示形式:
- 十进制、八进制(以数字0开头)和十六进制(以数字字母0x开头)。
如果一个整型常量后面加一个字母u或者U,则认为它是unsigned int型。
如果一个整型常量后面加一个字母l或者L,则认为它是long int型。
整型变量
整型类型 占用字节数 占用位数 取值范围 int 2 16 -2^15~2^15-1 short int 2 16 -2^15~2^15-1 long int 4 32 -2^31~2^31-1 unsigned int 2 16 0~2^16-1 unsigned short int 2 16 0~2^16-1 unsigned long int 4 32 0~2^32-1 整型在内存中的存储形式
数值是以补码的形式进行存储的。
一个正数的补码和其原码相同,而一个负数的补码为先对其原码按位取反,再加1。
对于无符号型的整数,所有位都用来存放数值。
对于有符号型的整数,内存最高位用来存放整数的符号,0表示正整数,1表示负整数。
整型数据的溢出
当定义了一个整型变量时,它在内存中存储的字节数也就固定下来了也即确定了它的最大值。
例如int型在内存中占用2个字节,则它的最大允许的值为32767,如果再加上1,就会发生溢出,数值变为-32768。
实型(浮点型)
实型常量
实型常量就是一个实数,又称浮点数,它有两种表示形式:
- 十进制小数形式(如-10.8)和指数形式(如100e5表示100*10^ 5)。
小数点前必须有且只能有一位非零的指数形式称为规范化指数形式。
实型常量均为有符号型浮点数,且只能用十进制形式表示。
可以在实型数据后面加上字母f或F,表示单精度实型数据。
实型变量
实型类型 | 占用字节数 | 占用位数 | 有效数字 | 取值范围 |
---|---|---|---|---|
float | 4 | 32 | 7 | +(10^-38~10^38) |
double | 8 | 64 | 15~16 | +(10^-308~10^308) |
实型在内存中的存储形式
实型数据在内存中是以指数的形式来进行存储的。内存空间分为两个独立的位段,一段用来存放小数部分,一段用来存放指数部分。具体到每个位段多少位,ANSI C 未作规定,由各种语言处理系统自行确定。
实型数据的误差
由于实型数据的内存存储单元位数有限,所以有效位数意外的其他数字位将会被舍去,这种误差被称为存储误差(舍入误差)。
此外,再将十进制数转换为二进制数时,有时也会产生误差,这种误差称为转换误差。
字符型
字符常量
C语言的字符常量是用单引号括起来的单个字符。
转义字符,就是一个反斜杠字符后面跟一个普通字符或若干个数字字符,把它们作为一个整体,用来代替某一个特殊字符。
字符变量
字符变量用来存放字符常量,其取值范围为ASCII码字符集中的256个字符。
字符变量用char来定义。
每个字符变量在内存中只占用一个字节(8位)的存储空间,只能用来存储一位字符常量。
字符型数据在内存中的存储形式
字符型数据在内存中存储的是与该字符的ASCII码值相等的整数值。
在C语言中可以把字符型的数据当整型数据来使用。
字符串常量
C语言中的字符串常量是用一对双引号括起来的字符序列。
C语言规定,在每一个字符序列的结尾都加上一个字符‘ ‘,作为字符串结束的标志。
字符常量’a‘可以赋给字符型变量,而字符串”a“只能用字符型数组存放。