Tại sao vòng lặp while chạy liên tục?

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int that_bai = 1;
   while (that_bai=1)
   {
        printf("lam lai\n");
        that_bai = 0;
   }
   return 0;
}

Mình không hiểu là tại sao code trên nó in liên tục ra chữ “lam lai”?
Theo mình hiểu thì in “lam lai” lần đầu sau đó that_bai =0 thì không thỏa đk phải ngừng in chứ.
Mong mọi người giúp đỡ.

Hi there,

Tớ sẽ dạy cậu 1 thứ được gọi là Yoda conditions.

Cậu để ý cái này:

Như cậu đã biết, nếu a = b thì b = a, vậy cậu thử đổi lại viết như thế này xem:

while (1 = that_bai)

Cái này được gọi là Yoda condition (cậu biết Yoda master trong Star Wars đúng không? Người chuyên nói câu theo thứ tự ngược ấy).

Thử build và chạy (nếu được). Lý do tại sao, cậu sẽ biết được.

11 Likes

Vẫn là một lỗi cú pháp “huyền thoại”.
Phép so sánh: ==.
Phép gán:=.

9 Likes

tks bạn, mình hiểu rồi

1 Like

tks bạn, mình làm được rồi

1 Like

Mình không code họ nhà C nên k rõ lắm nhưng bên JS có IDE/plugin hỗ trợ phần này, như hình dưới

Lý do mình post cái này vì thấy bảo đây là lỗi huyền thoại nên mình nghĩ với các IDE hiện đại như giờ thì nên chọn tìm cái nào fix được lỗi này, IDE báo thì mình vừa tự học được cái sai, vừa fix được luôn khỏi phải đi hỏi ai cả.

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