30/09/2018, 18:47

Câu lệnh if không đúng điều kiện nhưng vẫn hoạt động

Mình có chương trình đơn giản như sau:


int main(){
	int this = 5;
	if (this = 3) {
		printf("wrong");
	}
	else if (this = 2) {
		printf("something");
	}
	return 0;
}

Mặc dù không có giá trị đúng của if nhưng chương trình vẫn chạy và in ra trường hợp this = 3:
wrong
Mọi người giúp mình giải thích là tại sao nó lại hoạt đông như vậy. Xin cảm ơn

vũ xuân quân viết 20:55 ngày 30/09/2018

mệnh đề if của em sai rồi.
Viết đúng

IF(this == 3){}
Else If(this == 2){}.

Nguyễn Văn Dũng viết 21:02 ngày 30/09/2018

Cảm ơn ạ. Chắc tại lâu rồi không đụng tới C nên quên hết.

Bình Phạm viết 20:55 ngày 30/09/2018

Mặc dù không có giá trị đúng của if nhưng chương trình vẫn chạy và in ra trường hợp this = 3: wrong

Em viết if(this=3) nên khi thưc hiện máy sẽ hiểu thành if(3) vì 3>0 nên biểu thức đúng.
=> xuất ra màn hình wrong.

Bùi Phú Hiệp viết 20:53 ngày 30/09/2018

Để tránh mấy lỗi như thế này bạn có thể để giá trị đằng trước biến
Khi sử dụng if(2 = this) sẽ báo lỗi thì mình sẽ biết là chỗ so sánh bị sai

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

Đây là cái bạn đang tìm đây

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)

Bài liên quan
0