第五章 运算符、表达式和语句
5.1 运算符
5.1.1 求模运算符
第一个运算对象是负数,那么求模的结果为负数,反之则为正数。
5.1.2 优先级
首尾单独记(括号、逗号运算符)
一二三赋值(一元运算符、二元运算符、三元运算符、赋值运算符)
算术关系和逻辑(二元运算符的顺序,由高到低)
移位逻辑位插中间(移位在算术和关系之间,逻辑位在关系和逻辑之间)
5.2 表达式和语句
5.2.1 表达式
表达式由运算符和运算对象组成。
每个表达式都有一个值——根据运算符优先级来计算。
赋值表达式的值与赋值运算符左侧变量的值相同。
5.2.2 语句
语句是C程序的基本构建块。一条语句相当于一条完整的计算机指令。
5.2.3 副作用和序列点
副作用:对数据对象或文件的修改。
例:states = 50; 从C语言角度看,主要目的:对表达式求值,副作用:把states修改为50。
5.2.4 复合语句
用花括号括起来的语句,也称为块。
5.3 类型转换
涉及两种类型的运算,两个值会被分别转换成两种类型的更高级别。
类型级别从高到低:
long double -> double -> float -> unsigned long long -> long long -> unsigned long -> long -> unsigned int -> int(short和char会自动转换成int)
在赋值表达式中,计算结果会被转换成等号左边的变量的类型。
浮点数变成整数,会被截断。
强制类型转换:(type)xx