逻辑运算符第 3 部分
本课属于 Coddy C++ 学习旅程的“基础知识”单元。第 26 课,共 74 课。
检查多个条件时,计算机一旦知道最终答案,就会停止检查(这称为短路求值)。
例如:
int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2;这里 x 等于 0,因此不会计算 y / x > 2。如果我们调换顺序:
bool result = y / x > 2 && x != 0;这会导致错误,因为 y 将被 0 除,这在数学中是不允许的。
这种技巧用于优化逻辑表达式的求值。例如:
int a = 0;
int b = 2;
int c = 3;
int d = 5;
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);在这个示例中,不会计算 b < 2 和 d < 10,因为 a > 0 和 c < -5 都为假。
挑战
入门创建一个程序,判断今天是否适合利用太阳能电池板发电
初始化以下变量:
isSunny的值为 truewindSpeed的值为 5.4temperature的值为 23solarPanelOutput的值为 9isCloudy的值为 false
创建一个逻辑表达式,检查以下所有条件:
- 天气晴朗
- 风速小于 10
- 太阳能电池板的输出小于 15
- 气温高于 20 或没有云
亲手试试
#include <iostream>
int main() {
// 初始化变量
// 将下方每个占位值替换为任务要求的值
bool isSunny = false;
double windSpeed = 0.0;
int temperature = 0;
int solarPanelOutput = 0;
bool isCloudy = false;
// 完整的逻辑表达式
// 用一个结合全部四个条件的表达式替换下方的占位值
bool result = false;
// 输出结果
std::cout << "1. Is it sunny? " << std::boolalpha << isSunny << std::endl;
std::cout << "2. Is wind speed safe? " << (windSpeed < 10) << std::endl;
std::cout << "3. Do panels produce less? " << (solarPanelOutput < 15) << std::endl;
std::cout << "4. Is temperature good OR no clouds? " << (temperature > 20 || !isCloudy) << std::endl;
std::cout << "5. Final result: " << result << std::endl;
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: C++ 在线编译器