30/09/2018, 16:08
C++ Sự khác nhau giữa các câu lệnh so sánh
Mình đặt tiêu đề như trên k biết có chính xác không nữa.
Trong chương trình C++ sau:
#include <iostream>
int main()
{
float diem_;
std::cout << "CT Phan loai hoc sinh dua vao so diem nhap tu ban phim." << std::endl;
std::cout << "Nhap diem cua hoc sinh: ";
std::cin >> diem_;
/*if(0 <= diem_ < 4.5)*/
if (0 <= diem_ && diem_ < 4.5)
std::cout << "Hoc sinh duoc " << diem_ << " diem se phai o lai lop." << std::endl;
else if (4 <= diem_ && diem_ < 6.5)
std::cout << "Hoc sinh duoc " << diem_ << " diem duoc xep loai HS Trung Binh." << std::endl;
else if (6.5 <= diem_ && diem_ < 8.5)
std::cout << "Hoc sinh duoc " << diem_ << " diem duoc xep loai HS Kha." << std::endl;
else if (8.5 <= diem_ && diem_ <= 10)
std::cout << "Hoc sinh duoc " << diem_ << " diem duoc xep loai HS Gioi." << std::endl;
else
std::cout << "Diem cua hoc sinh co gia tri tu 0 toi 10." << std::endl;
return 0;
}
Các bạn giải thích giúp mình sự khác nhau giữa 2 câu lệnh:
if(0 <= diem_ < 4.5)
if (0 <= diem_ && diem_ < 4.5)
Bài liên quan
Thêm cái ảnh cho dễ nhìn
Dùng
Markdown
cũng dễ nhìn vậy Anh đã sửa bài của em dùngMarkdown
đấy.Đây là câu lệnh sai vì C không hiểu được cấu trúc này
Đây là câu lệnh đúng
Nếu viết kiểu 0<= diem<4.5 C++ nó sẽ không hiểu câu lệnh này. Giống như là nó so sánh 0 với điểm thôi chứ nó không ssanh với 4.5 đc. Khi điều kiện thỏa điểm lớn hơn không và bé hơn 4.5 thì nó mới chạy vào hàm if nếu đúng 1 trong 2 thì nó cũng sẽ không chạy
chỉ có thể nói là " vô cùng ảo diệu "! ý tưởng mới đây!
cái này hay nha
Câu lệnh sai hay là cú pháp sai. Code k hề báo lỗi mà @Đạt.
[quote=“Khoa_Thanh, post:4, topic:1639”]
Nếu viết kiểu 0<= diem<4.5 C++ nó sẽ không hiểu câu lệnh này.
[/quote] Câu lệnh này chỉ sai trong C++ hay trong cả các ngôn ngữ lập trình khác ? C++ không hiểu câu lệnh hay do mình viết câu lênh sai cú pháp ?
[quote=“Khoa_Thanh, post:4, topic:1639”]
Giống như là nó so sánh 0 với điểm thôi chứ nó không ssanh với 4.5 đc.
[/quote] Mình nhập vào giá trị điểm = -1 thì kết quả là vẫn thỏa mãn điều kiện if
Câu lệnh này không có được định nghĩa, không báo lỗi không có nghĩa là chạy đúng. C standard có một câu thế này: luôn tin tưởng vào lập trình viên.
Nhưng nếu lập trình viên code bậy thì ráng chịu. hehe.
Hầu hết mọi ngôn ngữ đều không hiểu.
Làm như vầy hoàn toàn đúng, chỉ đơn giản là không đúng với đề bài thôi.
Vì nó thực hiện so sánh từ trái qua phải. if(1 <= n <= 3) sẽ tương đương với if( ((1 <= n) <= 3)).
1 <= n đúng nên trả về 1, 1 <= đúng tiếp tục trả về 1 nên sẽ đưa dòng OK ra màn hình.
Thay điều kiện thành if(1 <= n <= -10) thì không in dòng OK ra màn hình thôi.
Ideone.com
Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.
vậy @minh_vu_03 giải thích cái này xem.
Nó vẫn in ra màn hình dòng OK thôi a Đạt. 1 <= 5 trả về 1, đem 1 so sanh với 3 mà
Thì đấy là lý do anh bảo C++ không hiểu được phép so sánh ấy, có phải mình muốn so sánh gia trị thuộc về khoảng, đoạn không?
Để tránh hiểu nhầm nên anh phải khẳng định như post ở trên:
Nhưng mà anh cũng không biết cái này, vì anh không sử dụng cách này. Cái phân tích ở trên của em anh chưa kiểm chứng. Có thể đúng
Giải thích như này hợp lí nha
Cảm ơn mọi người rất nhiều nha. Mình cảm thấy mình đã hiểu vấn đề này