30/09/2018, 18:40

Em mới học có câu hỏi thắc mắc: Tại sao khi ghi if(a=b) trình dịch lại không báo lỗi?

mọi người cho e hỏi e mới học C đk 1 thời gian e để ý thấy khi viết if(a=b) hoặc if(a==b) thì lúc debug đều ko báo lỗi. Em biết “=” là ko đúng nhưng các tiền bối có thể giải thích giùm e tại sao ko ạ? tại sao khi duyệt trình dịch vẫn cho qua ạ?

*grab popcorn* viết 20:48 ngày 30/09/2018

Bởi vì a=b là nó gán giá trị của b cho a rồi so sánh.

Truong Pham viết 20:41 ngày 30/09/2018

= là phép gán. Trong câu lệnh if thì phải sử dụng biểu thức logic tức là ở đây phải dùng ==

Bi-Clever viết 20:55 ngày 30/09/2018

do máy hiểu là phép gán nên k sai gì cả,bạn.

nhatlonggunz viết 20:47 ngày 30/09/2018

Nếu em không nhầm thì

if(a = b) {} 
// giống với
if((a = b) == true)
// giống với 
a = b;
if(a) {} // viết đầy đủ là if(a == true)
Killua viết 20:49 ngày 30/09/2018

Trong if là một biểu thức đúng - sai ( khác 0 - bằng 0 ) , bạn dùng a=b có nghĩa là bạn gán cho giá trị a bằng b , nếu b khác 0 thì a khác 0 và biểu thức đó sẽ là đúng > lệnh if thực hiện, ngược lại nếu b = 0 thì a= 0 , biểu thức trong if là sai > lệnh sẽ ko đc thực hiện

Bài liên quan
0