C语言基础-基本数据类型(2)
一. 变量
1.1 变量的存储
变量根据其所属数据类型的大小,在内存中开辟空间。变量也是可变的。
eg:
结果:
注意:当创建变量不初始化时,系统会自动初始化成随机值
这里的随机值是0
1.2各种类型的变量
1.2.1 整型变量
注意:int类型打印用%d
unsigned类型打印用%u
long类型打印用%ld
1.2.2 浮点变量
注意:float类型打印用%f
double类型打印用%lf
%.15lf表示打印到小数点后15位
1.2.3 字符变量
注意:打印字符变量用%c
字符变量存储时在内存中存储的是其ASCII码,故以%d的形式打印时直接打印其ASCII码,同样,也可通过字符的ASCII码给字符变量赋值或者初始化。
二. 表达式
表达式是有类型的。
表达式是有值的。
结果:
三. 运算符
3.1 双目运算符
| + | |
| - | |
| * | |
| / | 两个操作数都是整型,执行整型除法,结果是整型。当有一个操作数是浮点数时,则执行浮点数的除法,结果是浮点数。 |
| % | 求余操作数,两个操作数必须是整型 |
3.2 单目运算符
| ++ | (1) 自增运算符。 (2) ++a:先加加后使用 (3) a++:先使用后加加 (4) 操作数为变量,浮点数也支持自增操作 |
| -- | (1) 自减运算符。 (2) ++a:先减减后使用 (3) a++:先使用后减减 (4) 操作数为变量,浮点数也支持自减操作 |
3.3 赋值运算符
| = |
| += |
| -= |
| *= |
| /= |
(1)左值:只能是变量,不能是常量,表达式。
(2)右值:可以是变量,常量,表达式。
(3) 如果在赋值运算符左右两侧的数据类型不一样时,会按照以下规则进行转换
a. 将浮点数给整数赋值,则会丢弃小数部分
b. 将整数给浮点数赋值,则会扩展小数位
c. 如果左右两边占用内存空间大小相同,则完成内存的拷贝
d. 内存空间小的赋值给内存空间大的,如果最高位是0,则全补0,如果最高位是1,则全补1
e. 内存空间大的赋值给内存空间小的,则会发生高位截断
复合赋值运算符:
3.4 其他运算符
关系运算符:> >= < <= == !=
逻辑运算符:&& || !
逗号:
sizeof: 求常量,变量,数据类型所占内存空间的大小,单位为字节。
3.5 运算符的优先级与结合性
优先级:
单目>双目>三目>赋值>逗号
算术运算符>移位运算符>关系运算符>位运算符>逻辑运算符
结合性:
自右向左:条件运算符(? :),赋值运算符,单目运算符
其余大部分都是自左向右结合
四. 混合数据类型
1. 如果相同类型的数据进行运算, 结果是相同类型
2. 如果不同数据类型进行运算,就会发生隐式类型转换 。隐式转换(自动转换)会把低精度的数据类型向高精度的数据类型转换。如果相同类型会向内存空间占用大的转换: 例如:int会向unsigned int转。
4.1 隐式类型转换
规则:
4.2 显示类型转换/强制类型转换
结果:
