![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=1739143427-B9mYrZ9auWEESLY4rGl9lUUDFEDtdKz0-0-06b3c489b3eba1d130729def65bebf9c)
2.打开位
打开位是通过|(位或)打开一个值的特定位,同时保持其他位不变。这是因为和0位或都为0,和1位或都为1。
例如,只打开第二、三位。
![](https://epubservercos.yuewen.com/A8BCBE/16499866604816706/epubprivate/OEBPS/Images/Figure-P88_11847.jpg?sign=1739143427-0oiEPK5IQtEsVey9RRab3akh7i0p7S7u-0-0b9186487d0b7c96d005a7cd60684474)
3.关闭位
例如,关闭第二、三位。
![](https://epubservercos.yuewen.com/A8BCBE/16499866604816706/epubprivate/OEBPS/Images/Figure-P89_11923.jpg?sign=1739143427-YWIwWVQzRM3kV64wqF8QKM3djBuNrqes-0-c36ef98db745dec8212b45cbffcddc31)
4.转置位
若第一位为1,则转置为0;若第一位为0,则转置为1。
例如,转置第二、三位。
![](https://epubservercos.yuewen.com/A8BCBE/16499866604816706/epubprivate/OEBPS/Images/Figure-P89_11924.jpg?sign=1739143427-Fc6ipSmB6vU4w4q4Pyh32ez8Guki1sNT-0-5af1009c9e18f222d4a93cc4fcc04050)
疑问2 加、减、乘、除结果的数据类型和什么有关系?
加、减、乘、除结果的数据类型和算术的操作数有关,如果两个操作数均是整数类型,那么结果也是整数类型;如果至少一个操作数是浮点类型,那么结果也是浮点类型。
疑问3 使用条件运算符需要注意什么?
1.求值顺序
简单地说,条件运算符就是一种if-else结构形式,若expr1为真,则执行expr2,否则执行expr3。但需要注意它的求值顺序,expr2和expr3只能有一个被求值。
2.返回值
通常都会让条件表达式的expr2和expr3具有同一个类型,但其实这样不是必需的,只要expr2和expr3之间具有转换规则,编译器就会让代码通过。