01/10/2018, 12:10
Giúp sửa lỗi lập trinh c++
mình có đoạn code sau:
int main()
{
const int luongcb=650000;
int tnct;
float heso,luong;
cout << "nhap so nam cong tac ";
cin>>tnct;
if(tnct<12) heso=1.92;
else if(12<=tnct<36) heso=2.34;
else if(36<=tnct<60) heso=3;
else heso=4.5;
luong=luongcb*heso;
cout<<"luong cua ban la:"<<luong;
return 0;
Khi run thì kết quả chỉ đúng ở 2 trường hợp đầu(<12 va 12<=tnct<36) còn 2 th còn lại thì sai. nhưng nếu đổi điều kiện else if( tnct<36) và (tnct<60) thì chạy đúng.
Mình ko hiểu tại sao lại có sự khác nhau giữa 2 đoạn code. Ai biết giúp mình với. tks
Bài liên quan
Tách thành hai điều kiện mới đúng. Ngôn ngữ lập trình tuyệt đại đa số đều xử lí như vậy. (vì thế nào cũng có người viết NN hỗ trợ cái biểu thức oái oăm đó)
Nói riêng C++ thì xử lí a <= b <= c ntn: (a <= b) <= c, mà a <= b là biểu thức bool, ép về hai giá trị 0 hoặc 1 khi so với int.
bạn cho mình vd về a<=b ép về 0 hoac 1 khi so với int đi bạn. mình mới học nên chưa biết nhiều.
ví dụ 12 < 30 < 15 trả về 1 vì thứ tự thực hiện là (12 < 30) < 15 <=> 1 < 15 = 1
còn (12 < 30) && ( 30 < 15) <=> 1 && 0 = 0
Ngoài chiều đó còn có chiều ngược lại: số nguyên khác 0 là true. Nên đừng ngạc nhiên khi thấy những câu như
while(n--)
.