Toán tử logic phần 3
Thuộc phần Nền tảng cơ bản trong hành trình C của Coddy. Bài học 23 trên 63.
Khi kiểm tra nhiều điều kiện, chương trình sẽ ngừng kiểm tra ngay khi biết được kết quả cuối cùng. Cách này gọi là đánh giá đoản mạch (short-circuit evaluation).
Ví dụ:
int x = 0;
int y = 5;
int result = (x != 0) && (y / x > 2);Ở đây x bằng 0, vì vậy biểu thức sẽ không đánh giá y / x > 2. Nếu đảo ngược thứ tự:
int result = (y / x > 2) && (x != 0);Điều này sẽ gây ra lỗi vì y sẽ bị chia cho 0, phép tính không xác định trong C. Vì vậy, bạn nên suy nghĩ kỹ về các phép toán để viết code chính xác, hiệu quả và không có lỗi.
Kỹ thuật này giúp tối ưu hóa việc đánh giá các biểu thức logic. Ví dụ:
int a = 0;
int b = 2;
int c = 3;
int d = 5;
int result = (a > 0 && b < 2) || (c < -5 && d < 10);Trong ví dụ này, b < 2 và d < 10 sẽ không được đánh giá vì a > 0 và c < -5 đều sai.
Thử thách
DễTạo một chương trình để xác định xem đây có phải là ngày thích hợp để sản xuất năng lượng bằng pin mặt trời hay không
Khởi tạo các biến sau:
isSunnyvới giá trị 1 (đúng)windSpeedvới giá trị 5.4temperaturevới giá trị 23solarPanelOutputvới giá trị 9isCloudyvới giá trị 0 (sai)
Tạo một biểu thức logic (logical expression) để kiểm tra TẤT CẢ các điều kiện sau:
- Trời nắng
- Tốc độ gió nhỏ hơn 10
- Sản lượng pin mặt trời nhỏ hơn 15
- Nhiệt độ cao hơn 20 HOẶC trời không có mây
In ra "Good day for solar energy" nếu thỏa mãn tất cả các điều kiện, nếu không thì in ra "Not ideal for solar energy".
Tự làm thử
#include <stdio.h>
int main() {
// Khởi tạo các biến
int isSunny = 1;
float windSpeed = 5.4;
int temperature = 23;
int solarPanelOutput = 9;
int isCloudy = 0;
// Tạo biểu thức logic
int isGoodDay =
// Đừng thay đổi phần bên dưới
if (isGoodDay) {
printf("Good day for solar energy\n");
} else {
printf("Not ideal for solar energy\n");
}
return 0;
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Nền tảng cơ bản
2Biến
Kiểu dữ liệuSố nguyênSố thực - DoubleKý tựGiá trị BooleanHằng sốCơ bản về printfQuy tắc đặt tên biếnChuyển đổi kiểu phần 1Chuyển đổi kiểu phần 2Thử thách ôn tậpTự luyện tập: Trình biên dịch C online