Chuẩn C99 có cho phép C programmers sử dụng từ khóa "true" và "false" không?

Tình hình là em đang đọc đến trang 59 của quyển Head First C thì có 1 đoạn họ nói như sau:

Theo cách hiểu của em thì: Phiên bản đầu tiên của C (ANSI-C) không có giá trị cho truefalse, C programmers xem giá trị 0 là false, các giá trị khác là true. Nhưng chuẩn C99 cho phép programmers sử dụng từ khóa truefalse

Sau khi đọc xong đoạn này, em mừng rỡ vội vàng vào Codeblocks và chỉnh Compiler sang chuẩn C99 rồi type 1 đoạn code đơn giản sau:

#include <stdio.h>

int main()
{
       int num = 1;
       if (num == true)
              printf("Hihi.");
       else
              printf("Huhu.");
       return 0;
}

Kết quả là compiler của Codeblocks (gcc) nó báo: 'true' undeclared (first use in this function) => :sob:

Mọi người có thể giải thích cho em tại sao không ạ ? Em xin cảm ơn nhiều :blush:

#include <stdbool.h>

2 Likes

Bạn xem link này nói tuơng đối chuẩn

1 Like

Vậy nếu chỉ muốn dùng bool là phải #include cả 1 cái thư viện luôn hả anh ? Và lúc này bool với _Bool là giống nhau ? :slight_smile:

Cả cái thư viện gì, include để được macro true false thôi.
https://en.wikibooks.org/wiki/C_Programming/C_Reference/stdbool.h

1 Like

:)) Tại bọn lập trình viên cứ than là ko kiểu bool có chứ sao.

2 Likes

Hi Long Dragon.
Không cần thư viện gì cả theêm đoạn này vào đầu file

%:/**/define/**/true /**/0b1/**/
%:/**/define/**/false/**/(0b1/0b10)/**/

bạn cứ define TRUE 1, FALSE 0 cho nó đơn giản nhé,ko quan trọng lắm chỗ đó đâu :smiley:

1 Like

Ừm, để đoạn code:

#define bool _Bool
#define true 1
#define false 0

lên đầu file là cũng ok lắm rồi :smiley:

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