01/10/2018, 00:37

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 ạ?

*grab popcorn* viết 02:46 ngày 01/10/2018

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ì …

Nguyễn Văn Công viết 02:44 ngày 01/10/2018

thì sao bạn ơi???

Nguyễn Xuân Phúc viết 02:52 ngày 01/10/2018

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ì?

viết 02:41 ngày 01/10/2018

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.
*grab popcorn* viết 02:44 ngày 01/10/2018

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

Nguyễn Văn Công viết 02:48 ngày 01/10/2018

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

Bài liên quan
0