练习4.8
说明在逻辑与、逻辑或及相等性运算符中运算对象求值的顺序。
解答:
这里是求bool值,所以可以参考4.12的表。
优先级 == > && > ||
练习4.9
解释下面的if语句中条件部分的判断过程。
const char *cp = "Hello World";
if(cp && *cp)
解答:
先判断cp是否是一个空指针,如果为空,判断直接假,跳过if中的各项操作。
当cp不为空指针,则判断cp的第一个字符是否为空,从而判断字符是否是一个空字符串,如果为假,跳过if中的各项操作。
以上判断都为真的时候,才会去执行if后面的各项操作。
练习4.10
为while循环写一个条件,使其从标准输入中读取整数,遇到42时停止。
解答:
#include <iostream>
using namespace std;
int main(){
int num;
while (cin >> num && num != 42){
cout << num << endl;
}
cout << "finish" << endl;
}
练习4.11
书写一条表达式用于测试4个值a、b、c、d的关系,确保a大于b,b大于c,c大于d。
解答:
if ( (a > b) && (b > c) && (c > d))
练习4.12
假设i, j 和k是三个整数,说明表达式i != j < k的含义。
解答:
这里 < 逻辑运算符的优先级要高于!=
所以,这里会先判断j < k,是真还是假。如果是真,该表达式通常情况下是1;如果是假,那么就是0。
然后在判断i != 1 或者 i != 0,是真还是假。