![C++从零开始学(视频教学版)(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/128/29977128/b_29977128.jpg)
上QQ阅读APP看书,第一时间看更新
4.4 疑难解惑
疑问1 C++位逻辑运算符的作用是什么?
1.掩码
掩码是通过&(位与)将某些位设置为开(1),将某些位设置为关(0)。将掩码0看作不透明,将1看作透明。
例如,只显示第二、三位。
![](https://epubservercos.yuewen.com/A8BCBE/16499866604816706/epubprivate/OEBPS/Images/Figure-P88_11846.jpg?sign=1739005078-ccUxTeXfzM5Jvek3EeZ1UAhd5xvqwX4Q-0-d58ce1190fe4926c18bb1578de10ee9e)
2.打开位
打开位是通过|(位或)打开一个值的特定位,同时保持其他位不变。这是因为和0位或都为0,和1位或都为1。
例如,只打开第二、三位。
![](https://epubservercos.yuewen.com/A8BCBE/16499866604816706/epubprivate/OEBPS/Images/Figure-P88_11847.jpg?sign=1739005078-06ZY43ijwaDTysyC0WENuBasmAVyspXj-0-d06a93edc912efc315ff9ec89e1952e5)
3.关闭位
例如,关闭第二、三位。
![](https://epubservercos.yuewen.com/A8BCBE/16499866604816706/epubprivate/OEBPS/Images/Figure-P89_11923.jpg?sign=1739005078-Z3U1MryYbsdCJQ0KneYbYxEDtK5KZGC3-0-c7456f64695332eba546b7d4ee888737)
4.转置位
若第一位为1,则转置为0;若第一位为0,则转置为1。
例如,转置第二、三位。
![](https://epubservercos.yuewen.com/A8BCBE/16499866604816706/epubprivate/OEBPS/Images/Figure-P89_11924.jpg?sign=1739005078-kU56w19EYJTm9R0BHlYpXt8EkcNtoBEi-0-ec6be9e40e9542445bdd38f156a9b7a4)
疑问2 加、减、乘、除结果的数据类型和什么有关系?
加、减、乘、除结果的数据类型和算术的操作数有关,如果两个操作数均是整数类型,那么结果也是整数类型;如果至少一个操作数是浮点类型,那么结果也是浮点类型。
疑问3 使用条件运算符需要注意什么?
1.求值顺序
简单地说,条件运算符就是一种if-else结构形式,若expr1为真,则执行expr2,否则执行expr3。但需要注意它的求值顺序,expr2和expr3只能有一个被求值。
2.返回值
通常都会让条件表达式的expr2和expr3具有同一个类型,但其实这样不是必需的,只要expr2和expr3之间具有转换规则,编译器就会让代码通过。