Cách sử dụng toán tử luận lý NOT(!)

Mình đang học phần tập tin có lệnh sau:
while (!feof(file))
{

}
Hàm feof là hàm kiểm tra đk đã cuối file hay chưa. Hàm trả về -1 nếu hết file, trả về 0 nếu chưa hết file và trả về 1 số nguyên nếu lỗi. Vậy dùng toán tử not ở đây có ý nghĩa gì ạ? Mình phải hiểu ntn ạ?

Bạn nhầm rồi, hàm này trả về 0 = chưa hết file, số khác 0 = đọc hết rồi.

-> !feof() là nếu chưa hết file thì …

1 Like

thì sao bạn ơi???

NOT là phủ định, có thành không, không thành có, đúng thành sai và sai thành đúng.
Trong C/C++ thì 0 cũng có nghĩa là sai, và khác 0 là đúng.
Vậy nếu hàm feof trả về 0 khi hết file, nếu lấy phủ định của nó sẽ thành là gì?

1 Like

Nó sai vì có 2 lí do:

  1. Khi file đã đọc hết, nó trả về số khác 0, nhưng toán tử NOT (!) chuyển về số 0.
  2. Khi bạn truyền tên file vào tham số file trong hàm feof(), nếu file không hợp lệ, thì hàm trả về -1 và toán tử NOT (!) lại chuyển nó thành 0, làm vòng while không bao giờ dừng.
1 Like

:joy: Thì tùy mình xử lý chứ sao
Mình ghi v ý là thì làm gì đó ấy.

2 Likes

Rất đầy đủ. Thanks you. :smiley:

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