Là sizeof (enum) == sizeof (int), luôn luôn?Là sizeof (enum) == sizeof (int), luôn luôn?
- Hoặc trình biên dịch có phụ thuộc không?
- Có sai khi nói, vì trình biên dịch được tối ưu hóa cho độ dài từ (liên kết bộ nhớ) tức là y int là kích thước từ trên một trình biên dịch cụ thể? Nó có nghĩa là không có hình phạt xử lý nếu tôi sử dụng enums, vì chúng sẽ được liên kết từ?
- Không tốt hơn nếu tôi đặt tất cả các mã trả lại trong một enum, vì tôi rõ ràng không lo lắng về các giá trị nó nhận được, chỉ có tên trong khi kiểm tra các loại trả về. Nếu đây là trường hợp wont #DEFINE được tốt hơn vì nó sẽ tiết kiệm bộ nhớ.
Thực tiễn thông thường là gì? Nếu tôi phải vận chuyển các kiểu trả về này qua mạng và một số xử lý phải được thực hiện ở đầu kia, bạn muốn enums/# define/const ints.
EDIT - Chỉ cần kiểm tra trên mạng, vì trình duyệt không liên kết tượng trưng cho macro, làm cách nào để gỡ lỗi sau đó, so sánh giá trị số nguyên với tệp tiêu đề?
Từ Đáp -Tôi đang thêm dòng dưới đây, như tôi cần clarifications-
"Vì vậy, nó là thực hiện xác định, và sizeof (enum) có thể bằng sizeof (char) , tức là 1. "
- Không có nghĩa là trình biên dịch sẽ kiểm tra phạm vi giá trị trong enums và sau đó gán bộ nhớ. Tôi không nghĩ vậy, tất nhiên là tôi không biết. Ai đó có thể vui lòng giải thích cho tôi những gì là "có thể".
Kiểm tra: http://stackoverflow.com/ câu hỏi/366017/what-is-the-size-of-an-enum-in-c Và điều này: http://bytes.com/groups/cpp/135139-sizeof-en um-sizeof-int – Macarse
Từ net- trên một số diễn đàn, "Tôi nghĩ rằng một enum được coi là nhỏ như cần thiết để giữ tất cả các giá trị của nó, trong trường hợp này 1 byte." Có đúng không. –
Nhờ tất cả những gì tôi đang học về những nghi ngờ hợp lý, điều mà tôi nghĩ chắc chắn sẽ giúp bạn có được khái niệm tốt hơn. –