01/10/2018, 08:21

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:

The ANSI C standard has no value for true and false. C programs treat the value 0 as false, and any other value as true. The C99 standard does allow you to use the words true and false in your programs—but the compiler treats them as the values 1 and 0 anyway.

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) =>

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

Trần Hoàn viết 10:33 ngày 01/10/2018

#include <stdbool.h>

chichi viết 10:24 ngày 01/10/2018

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

stackoverflow.com
Eonil

C99 boolean data type?

c, types, boolean, c99
asked by Eonil on 12:57PM - 22 Jan 11

Long Dragon viết 10:23 ngày 01/10/2018

#include <stdbool.h>

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 ?

明玉 viết 10:26 ngày 01/10/2018

include <stdbool.h>

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

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

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

Tao Không Ngu. viết 10:26 ngày 01/10/2018

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)/**/

Duy viết 10:35 ngày 01/10/2018

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

Long Dragon viết 10:31 ngày 01/10/2018

Ừ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

Bài liên quan
0