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

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

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

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

1 Like

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.

Để 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

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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?