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!
Bài liên quan
Khác nhau ở chỗ c88 không tồn tại.
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.
À, 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?
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.C89 không có boolean, C99 có boolean, mình
#include <stdbool.h>
vào là được.Đọc thêm:
C99 boolean data type?
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.