第二章 数据类型、运算符及表达式1
第二章 数据类型、运算符及表达式1
1、数据表现形式
①常量 ------ 其值在运行过程中不能改变的量
②变量 ------ 用来存放变量,即变量的值
③常变量 ------ 其值不能改变的
1>常量
在程序运行过程中,其值不能被改变的量 称为变量。
常量的分类:
整型常量 | 1000,12345,0,-545 |
---|---|
实型常量 | 1、十进制小数形式(123.45,0.456,0.0) 2、指数形式(12.34e3 代表12.34*10的三次方) |
字符常量 | 1、普通字符(‘1’,‘a’,’\n’等) 2、转义字符 |
字符串常量 | “123”,”abc”等 |
符号常量 | 用#define指令,指定一个符号名称代表一个常量。如#define PI 3.14 |
常量的几点注意事项:
- 字符常量 有且仅包括一个字符,且用单引号 用单引号’'表示。
- 字符串常量可以 包括全部字符,用双引号”” 双引号””表示。
- 符号常量不占内存,只是一个临时符号
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) | 009 |
\v | 垂直制表(VT) | 011 |
\’ | 单引号 | 039 |
\" | 双引号 | 034 |
\\ | 反斜杠 | 092 |
\? | 问号 | |
\ooo | 与该八进制码对应的ASCII字符 | |
\xhh | 与该十进制码对应的ASCII字符 |
2>变量
1.在运行过程中其值可以被改变。
2.变量必须先定义后使用。
3.数据类型 变量名 = 变量值
例如定义一个整型变量 sum, int sum = 0;
4.变量的实质。
以 int b=2 为例,
5.变量的特点
①变量在编译时系统会给其分配相应的内存空间。
②可以通过变量名或者地址访问内存空间。
3>常变量
1.定义
运行期间其值不会改变的变量。
2.格式
const 数据类型 变量名 = 变量值
如 const int a = 3;
注意事项
1.符号常量 符号常量和变量 变量的区别
①符号常量是不占内存的,只是一个临时符号,预编译完成后就消失了。
②符号常量用大写表示。
2.常变量 常变量与常量 常量的异同
①常变量具有变量的基本属性,即有类型、占存储单元。
②不允许改变其值
4>标识符
- (1)标识符由字母、下划线和数字组成,只能是字母和下划线开头;
- (2)标识符不能是关键字,不能是库函数名;
- (3)区分大小写字母;
- (4)标识符前八个字符是有效字符;
- (5)标识符命名要见名知意。
注意: 编译系统将大写字母和小写字母认为是两个不同的字符。
5>进制
相应的进制在 C 语言中的表示
十进制 | 以正常数字 1-9 开头,如 15 |
---|---|
八进制 | 以数字 0 开头,如 015 |
十六进制 | 以 0x 开头,如 0x15 |
二进制 | C 语言不能直接书写二进制数 |
6>整数的存储方式
在存储单元中的存储方式是:用整数的补码形式存放的。
一个正数的补码是此数的二进制形式。
一个负数的补码是:先将此数的绝对值写成二进制形式,然后对其所有二进位按位取反,再加1.
注意: 存放整数的存储单元中,最左面一位是符号位。0为正,1为负。
1.原码
①一个数的源码是原始的二进制码。
②最高位是符号位,0 表示正,1 表示负。
③数值位就是数值本身的绝对值的二进制数。
④负数的原码是在绝对值的基础上,最高位为 1。
2.反码
①对于正数,反码和原码相同。
②对于负数,符号位不变,其他部分按位取反。
3.补码
①计算机中存储数据都是补码形式 存储数据都是补码形式,为了解决负数存储问题。
②对于正数,原码、补码、反码都相同。
③对于负数,其补码为其反码加 1。
④补码符号位不变,其他位求反,最后整个数加 1,得到原码。
2、数据类型
1>整数
整型类型的分类
1.基本整型(int 型)
①占 2 个或者 4 个字节,由编译系统决定。
②以整数的补码形式存放。
2.短整型(short int)
以 Visual C++为例,占 2 个字节。
3.长整型(long int)
以 Visual C++为例,占 4 个字节。
4.双长整型(long long int)
以 Visual C++为例,占 8 个字节。
有符号整数与无符号整数的取值范围
类型 | 字节数 | 取值范围 |
---|---|---|
int | 2 | - 32768 ~ 32767 (5位十进制数) |
int | 4 | - 2147483648 ~ 2147483647 (10位十进制数) |
unsignde int | 2 | 0 ~ 65535 (5位十进制数) |
unsignde int | 4 | 0 ~ 4294967295 (10位十进制数) |
short | 2 | - 32768 ~ 32767 (5位十进制数) |
unsigned short | 2 | 0 ~ 65535 (5位十进制数) |
long | 4 | - 2147483648 ~ 2147483647 (10位十进制数) |
usigned long | 4 | 0 ~ 4294967295 (10位十进制数) |
long long | 8 | - 9223372036854775808 ~ 9223372036854775807(20位十进制数) |
unsigned long long | 8 | 0 ~ 18446744073709551615 (20位十进制数) |
2>字符型数据
1.内存中没有字符,只有数字,存放字符实际上存放的是其 ASCII 码(即一个字符对应
一个数字的一张表)。
2.使用字符赋值和使用 ASCII 码赋值作用是一样的。
3.字符类型的实质就是一个字节的整数。
ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 |
---|---|---|---|---|---|---|---|
0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | " | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | , | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | / | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ` |
31 | US | 63 | ? | 95 | _ | 127 | DEL |
注意: 常用的几个ASCII
0——48,A——65,Z——90,a——97,z——122
字符变量
字符变量是用类型符char定义字符变量。
取值范围如下
数据类型 | 占用空间 | 取值范围 |
---|---|---|
char | 1字节 | -128到127 |
unsigned char | 1字节 | 0到255 |
注意: 赋值时一定要注意不要超过取值范围。
3>浮点数类型数据
浮点型的作用是用来存储小数的,常见的主要是两种,单精度浮点型 float、双精度浮点型 double。其中,double 所表示的浮点数比 float 要更准确。
取值范围
数据类型 | 占用空间 | 有效数字范围 |
---|---|---|
float | 4字节 | 6 位有效数字 |
double | 8字节 | 15 位有效数字 |
long double | 8字节 | 15 位有效数字 |
long double | 16字节 | 19 位有效数字 |