2010-08-12 30 views
14

Làm thế nào để khai báo một biến của kiểu dữ liệu bool trong C chạy trên nền tảng Linux. Tôi đã thử những điều sau đây nhưng đưa ra lỗi:Khai báo biến bool trong c trên nền tảng Linux

#include<stdio.h> 
#include<string.h> 

bool factors[1000] 
void main() 
{ 
} 
+5

void main()? Có thật không? –

Trả lời

5

C không có loại bool. Thay vào đó, bạn có thể sử dụng int, sử dụng 0 cho false và 1 cho true.

+0

Tôi nghĩ C99 là C. –

+0

C99 không có bool. #include ninjalj

+0

Có, C DOES có kiểu bool. Đó là _Bool và có thể được sử dụng bằng cách thực hiện #include . Hãy nhớ rằng, C99 _IS_ C. –

-2

Trong C99 có loại bool. Nhưng tôi tự hỏi tại sao bạn không thể viết mã của bạn trong C++. Bạn không cần phải sử dụng tất cả các tính năng OOP nâng cao của C++. Bạn có thể viết mã "kiểu C" và biên dịch nó bằng trình biên dịch C++.

+0

+1. Câu trả lời hợp lý. Có rất ít trình biên dịch C có thể làm điều đó sẽ không được chấp nhận bởi trình biên dịch C++, trình biên dịch C++ có các tính năng gọn gàng trên đầu C (như, hey, bool), và chặt chẽ hơn về loại an toàn so với đối tác C của nó. Và nó có thể là một cách tốt để tìm hiểu một số thủ thuật C++ gọn gàng (như có một cấu trúc C khởi tạo chính nó thông qua một hàm tạo ...) – paercebal

+4

C++ không phải là một thay thế cho C. Xem => mảng độ dài biến, macro variadic, snprintf, được chỉ định khởi tạo. –

+3

Tôi sẽ không downvote vì bạn mới, nhưng nói chung bạn không nên đề nghị ai đó thay đổi ngôn ngữ của họ, thậm chí từ C đến C++. – Potatoswatter

0

char chưa ký thường là lựa chọn tốt hơn cho một bool so với int, đặc biệt nếu bạn sắp có một nghìn trong số đó. Mặc dù nó thực hiện phụ thuộc lớn như thế nào một unsigned char là và làm thế nào mảng sẽ được đóng gói.

+0

Không. Nó thường chậm hơn và không bao giờ nhanh hơn. –

+0

Bạn nói đúng là tốc độ truy cập thường chậm hơn một chút, nhưng tầm quan trọng của tốc độ truy cập phụ thuộc vào tần suất truy cập mảng. Tiết kiệm bộ nhớ có thể quan trọng hơn nhiều. Cho dù bạn đang bị ràng buộc về CPU hay bị hạn chế về bộ nhớ thì đây là điều cần cân nhắc. Tôi đoán là nó có nhiều khả năng là sự khác biệt trong tốc độ truy cập sẽ không được nhận thấy nhưng bộ nhớ thêm được đưa lên bởi các mảng sẽ được nhận thấy. Tất cả phụ thuộc vào kịch bản sử dụng của bạn. – david

2

Nếu loại không được xác định trong môi trường của bạn, bạn có thể xác định các loại riêng, cũng có thể là bool, ví dụ:

typedef enum {false,true} bool; 
Các vấn đề liên quan