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 true và false, 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 true và false …

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