第二章 C++简单程序设计
运算与表达式
算术运算与赋值运算
-
算术运算
- 基本算术运算符
-
-
-
- /(若整数相除,结果取整);
-
-
- %(取余,操作数为整数)。
-
- 优先级与结合性
- 先乘除,后加减,同级自左至右。
- ++, --(自增、自减)。
- 基本算术运算符
-
赋值运算
- 将值赋给变量;
- 赋值运算符“=”;
- 赋值表达式:
- 用赋值运算符连接的表达式;
- 表达式的值指的是赋值运算符左边对象被赋值后的值;
- 表达式的类型指的是赋值运算符左边对象的类型;
- 复合的赋值运算符
- +=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。
逗号运算、关系运算、逻辑运算和条件运算
-
逗号运算和逗号表达式
- 格式:表达式1,表达式2。
- 求解顺序及结果
- 先求解表达式1,再求解表达式2;
- 最终结果为表达式2的值。
-
关系运算与关系表达式
- 关系运算是比较简单的一种逻辑运算,优先次序为:
- > >= < <= 优先级相同(高);
- == != 优先级相同(低)。
- 关系表达式是一种最简单的逻辑表达式,其结果类型为 bool,值只能为 true 或 false。
- 关系运算是比较简单的一种逻辑运算,优先次序为:
-
逻辑运算与逻辑表达式
- 逻辑运算符
- !(非) &&(与) ||(或)
- 优先次序:高 → 低
- 逻辑运算结果类型为 bool,值只能为 true 或 false 。
- &&(逻辑与)运算
- && 的运算规则
- 两侧表达式都为真,结果为真;
- 有一侧表达式为假,结果为假。
- && 的短路特性
- 表达式 1 && 表达式 2
- 先求解表达式1;
- 若表达式1的值为 false,则最终结果为 false,不再求解表达式2;
- 若表达式1的结果为 true,则求解表达式2,以表达式2的结果作为最终结果。
- && 的运算规则
- ||(逻辑或)运算
- || 的运算规则
- 两侧表达式都为假,结果为假;
- 有一侧表达式为真,结果为真。
- || 的短路特性
- 表达式1 || 表达式2
- 先求解表达式1;
- 若表达式1的值为 true,则最终结果为 true,不再求解表达式2;
- 若表达式1的结果为 false,则求解表达式2,以表达式2的结果作为最终结果。
- || 的运算规则
- 逻辑运算符
-
条件运算符与条件表达式
- 一般形式:表达式1?表达式2 :表达式3;
- 表达式1必须是 bool 类型;
- 执行顺序
- 先求解表达式1;
- 若表达式1的值为 true,则求解表达式2,表达式2的值为最终结果;
- 若表达式1的值为 false,则求解表达式3,表达式3的值为最终结果。
- 条件运算的优先级
- 条件运算符优先级高于赋值运算符,低于逻辑运算符;
- 表达式1是 bool 类型,表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。
Sizeof 运算、位运算
-
sizeof 运算
- 语法形式:
- sizeof (类型名);
- sizeof 表达式。
- 结果值:
- “类型名”所指定的类型,或“表达式”的结果类型所占的字节数。
- 语法形式:
-
位运算
- 按位与(&)
- 运算规则:
- 将两个运算量的每一个位进行逻辑与操作。
- 用途:
- 将某一位置变为0,其他位不变;
- 取指定位。
- 运算规则:
- 按位或(|)
- 运算规则:
- 将两个运算量的每一个位进行逻辑或操作。
- 用途:
- 将某些位置变为1,其他位不变。
- 运算规则:
- 按位异或(^)
- 运算规则:
- 两个操作数进行异或,若对应位相同,则结果该位为0,若对应位不同,则结果该位为1。
- 用途:
- 使特定位翻转,与0异或保持原值,与1异或取反。
- 运算规则:
- 取反(~)
- 运算规则:
- 单目运算符,对一个二进制数按位取反。
- 运算规则:
- 移位(<<、>>)
- 左移运算(<<)
- 左移后,低位补0,高位舍弃。
- 左移运算(<<)
- 右移运算(>>)
- 右移后:
- 低位:舍弃。
- 高位:
- 无符号数:补0;
- 有符号数:补“符号位”。
- 右移后:
- 按位与(&)
运算优先级、类型转换
- 运算符优先级
- 混合运算时数据类型的转换
- 一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。
- 在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。