第五章 运算符、表达式和语句


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