30/09/2018, 17:18

Khác biệt giữa Boolean trong C89/90 và C99

Mình có 1 số thắc mắc sau về C88 và C89. Mong mọi người cho ý kiến:

  • sự khác nhau của c88 và c89 là gì và tại sao lại phải tạo ra 2 cái khác nhau.
  • Mình có một chương chình như thế này:
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int main()
{
    int flag=1;
    if(!flag){
        printf("A");
    }
    else if(!flag==3)
        printf("B");
    else
        printf("C");
    return 0;
}

Mình không hiểu cách chương trinh này hoạt động như thế nào.

  • Mình đọc 1 cuốn sách và thấy tác giả nói là trong C88 có Boolean nhưng trong C89 không có Boolean.

Cảm ơn rất nhiều!

Mai Anh Dũng viết 19:33 ngày 30/09/2018

sự khác nhau của c88 và c89 là gì

Khác nhau ở chỗ c88 không tồn tại.

Mình đọc 1 cuốn sách và thấy tác giả nói là trong C88 có Boolean nhưng trong C89 không có Boolean.

Kiểm tra lại sách xem có chính xác là ghi C88 và C89 không. Nếu có thì đừng đọc sách đấy nữa. Đạt nghĩ là @ngvandung nhầm giữa C89 và C90.

Nguyễn Văn Dũng viết 19:33 ngày 30/09/2018

À, mình bị nhầm. Tác giả ghi là không có Boolean trong C89. Vậy bây giờ chúng ta đang dùng C99 hay là C gì vậy @ltd? C hiện nay có Boolean hay không?

Mai Anh Dũng viết 19:32 ngày 30/09/2018

Mặc định là C89, nhưng mình có thể chọn C89 hay C99 khi build bằng cách thêm cờ để chọn. Ví dụ c99 thì nếu mình dùng gcc mình sẽ viết thêm cờ std khi compile.

std=c99

C89 không có boolean, C99 có boolean, mình #include <stdbool.h> vào là được.

Đọc thêm:

stackoverflow.com
Eonil

C99 boolean data type?

c, types, boolean, c99
asked by Eonil on 12:57PM - 22 Jan 11
Hung viết 19:21 ngày 30/09/2018

Theo mình biết thì tháng 12/2011 đã có phiên bản C mới nhất là C11. Boolean đưa vào C ở phiên bản C99.
"C99 introduced the _Bool type, which is technically unnecessary, because you can always use an integer to represent a true/false value. But to a human reading the code,the Boolean type clarifies that the variable can only take on true/false values, and so gives some indication of its intent." - Trích trong "21st century C"

Theo mình thì tạo ra các phiên bản để nâng cấp ngôn ngữ phù hợp với nhu cầu thời đại đó bạn.
Ví dụ như ngày xưa viết code tiết kiệm từng KB. Ngày nay bộ nhớ lên đến GB, vi xử lý nhân đa luồng nên tư duy lập trình cũng thay đổi.
Dễ tìm trên mạng các tài liệu nói về sự khác biệt giữa các phiên bản.

Bài liên quan
0