C语言数据类型与常量
课程介绍
欢迎学习C语言数据类型课程!本章将介绍C语言中的基本数据类型、各种常量形式及其使用方法。
通过本课程的学习,您将掌握:
- C语言的基本数据类型及其特点
- 整型常量的不同表示方法
- 浮点型常量的表示和科学计数法
- 字符型常量和转义字符的使用
课程中包含知识点讲解、示例代码和练习题,帮助您巩固所学内容。
C语言的基本数据类型
在现实生活中会遇到不同类型的数据,比如数据有整数和实数之分、单个字符和字符串之分。在C语言中,常用的数据类型有整型、浮点型、字符型和字符串型等几种。
例如:
- 789是整型常量
- 1234.56和1.25e6是浮点型常量
- 'a'是字符型常量
- "C语言"是字符串型常量
C语言常用的标准数据类型如下表所示:
| 类型标识符 | 名称 | 长度(B) | 表示范围 |
|---|---|---|---|
| char | 字符型 | 1 | 0~255 |
| short | 短整型 | 2 | -215 ~ +215-1 (-32768 ~ 32767) |
| int或long | 整型(长整型) | 4 | -231 ~ +231-1 (-2147483648 ~ 2147483647) |
| float | 浮点型(实型) | 4 | 10-37 ~ 10+38 (绝对值) |
| double | 双精度浮点型 | 8 | 10-307 ~ 10+308 (绝对值) |
说明:在Dev-C++或VisualC中,int等同long。
如果在char或short或int类型标识符前面加上关键字unsigned,则表示无符号的整数类型,其值为非负整数:
- unsigned char: 0~255
- unsigned short: 0~65,535 (0~216-1)
- unsigned long int: 0~4,294,967,295 (0~232-1)
练习题 1: 数据类型选择
如果要存储一个人的年龄(0-150),最合适的数据类型是:
答案:B. unsigned char
解析:年龄是非负整数,且范围在0-150之间,unsigned char的范围是0~255,完全满足需求且占用内存最小。
练习题 2: 数据类型范围
以下哪种数据类型可以存储最大的整数值?
答案:C. unsigned long
解析:unsigned long的范围是0~4,294,967,295,比short(-32,768~32,767)和int(-2,147,483,648~2,147,483,647)的范围都大。float虽然可以表示更大的数值,但它是浮点型,不是整型。
整型常量
在程序的运行过程中,其值保持不变的量称为常量。常量可以用一个标识符来表示,称为符号常量,可在程序开头用#define命令来定义。例如:
#define PI 3.1415926
此后,只要是在文件中出现的PI均可用3.1415926来代替。
除了大家比较熟悉的整型常量(如100、0、-256)之外,C语言中还有其他形式的整型常量:
| 例子 | 说明 |
|---|---|
| -1234 | 十进制整型常量(包含数字0~9) |
| 01234 | 八进制整型常量(以0开头,包含数字0~7) |
| 0x1234 | 十六进制整型常量(以0x或0X开头,包含数字0~9、字母A~F或a~f) |
| 0L | long型十进制整型常量(以l或L结尾) |
例如:
- 0235等于十进制数157,即 2×82+3×81+5×80=157
- -0X23a等于十进制数-570。因为 0X23a=2×162+3×161+10×160=570
任何类型的数据在计算机中都是以二进制补码形式存储的。short型数据在内存中占16位,long int型数据在内存中占32位,其中最高位为符号位(无符号型除外),1表示负数,0表示正数。
练习题 1: 进制转换
八进制数045转换为十进制数是:
答案:B. 37
解析:八进制数045转换为十进制:4×81 + 5×80 = 32 + 5 = 37。
练习题 2: 十六进制表示
以下哪个是合法的十六进制整型常量?
答案:B. 0X1234
解析:十六进制常量必须以0x或0X开头,后面跟0-9、A-F或a-f的字符。A包含非法字符G和H,C和D没有以0x或0X开头。
浮点型常量
C语言中的浮点类型主要分为单精度和双精度两种,一般以双精度为主。注意,在C语言数据中,1和1.0是两种不同类型的数,1是整数,而1.0则是双精度浮点数。
以下是合法的十进制浮点数表示:
1234.56、-1.2、0.0、.5、6、1000000000.0
浮点数还可采用科学计数法,以下是合法的科学计数法表示:
1.23456e2、0.345E-3、-765e12、-.5E-8、6.e-7、1.0e10
必须说明的是,出现在字母e(或E)之前的小数点,其左边或右边至少应有一位数字,在字母e(或E)之后必须是整数,即1.34E1.2、.e2均是非法的浮点数。
例如:0.000123456=1.23456×10-4,可表示成1.23456e-4或0.123456e-3。
练习题 1: 科学计数法
将十进制数0.00000725用科学计数法表示正确的是:
答案:B. 7.25e-6
解析:0.00000725 = 7.25 × 10-6,在C语言中表示为7.25e-6。A表示7250000,C不是标准科学计数法形式,D表示0.000000725。
练习题 2: 浮点数合法性
以下哪个不是合法的浮点型常量?
答案:C. e5
解析:e5不是合法的浮点常量,因为科学计数法要求e/E前必须有数字。A、B、D都是合法的浮点常量。
字符型常量
C语言的字符常量是用单引号(即撇号)括起来的一个字符,如'*'、'a'、'A'、'&'、'!'等都是字符常量。注意,'a'和'A'是不同的字符常量。
字符数据存放在内存中的,并不是字符本身,而是字符的代码,即ASCII码(美国标准信息交换码)。ASCII标准字符集定义了128个字符,每个字符对应于一个ASCII码,编码值为0~127。
从ASCII表可以看出:
- 数字字符'0'~'9'的ASCII码是连续的
- 大写字母'A'~'Z'的ASCII码是连续的
- 小写字母'a'~'z'的ASCII码也是连续的
- 小写字母的ASCII码比对应的大写字母的ASCII码大32
字符的存储形式与整数相似,不同的是,它在内存中仅占一个字节。C语言的字符型数据与整型数据之间可以通用。
除了以上的字符常量外,一些不可显示的控制字符(比如回车符、制表符、退格键等)在程序中无法用一个一般形式的字符表示,C语言允许用一种特殊形式的字符常量来表示这些字符:一个以反斜杠"\"开头的字符,称为转义字符。
常用的转义字符有:
| 转义字符 | 功能 |
|---|---|
| \n | 换行符(将当前位置移到下一行开头) |
| \t | 水平制表符(跳到下一个Tab位置) |
| \b | 退格 |
| \r | 回车(将当前位置移到本行开头) |
| \\ | 反斜杠 |
| \' | 单引号 |
| \" | 双引号 |
转义字符看起来是两个字符,实际上只能算一个字符。
练习题 1: 字符与ASCII码
字符'A'的ASCII码是65,那么字符'D'的ASCII码是:
答案:C. 68
解析:大写字母的ASCII码是连续的,'A'是65,'B'是66,'C'是67,'D'是68。
练习题 2: 转义字符
以下哪个转义字符表示换行?
答案:B. \n
解析:\n表示换行符,\t表示制表符,\r表示回车,\b表示退格。
总结与易错点
知识点总结
易错点提醒
1. 混淆整型和浮点型:1是整型,1.0是浮点型,两者在内存中的表示形式和运算规则不同。
2. 八进制和十六进制表示错误:八进制必须以0开头,十六进制必须以0x或0X开头。
3. 科学计数法格式错误:e/E前必须有数字,e/E后必须是整数,不能有小数点。
4. 字符和字符串混淆:字符常量用单引号,字符串常量用双引号,'a'和"a"是不同的。
5. 转义字符使用错误:常见错误如将文件路径中的反斜杠写为单斜杠,正确应为"\\"。