Tôi đã bắt gặp một điểm thú vị ngày hôm nay trong một bài đánh giá về Code Review . @Veedrac khuyến nghị trong câu trả lời này rằng các loại kích thước thay đổi (ví dụ int
và long
) được thay thế bằng các loại kích thước cố định như uint64_t
và uint32_t
. Trích dẫn từ các bình luận của câu trả lời đó:
Kích thước của int và long (và do đó các giá trị họ có thể giữ) phụ thuộc vào nền tảng. Mặt khác, int32_t luôn dài 32 bit. Sử dụng int chỉ có nghĩa là mã của bạn hoạt động khác nhau trên các nền tảng khác nhau, thường không phải là những gì bạn muốn.
Lý do đằng sau tiêu chuẩn không sửa các loại phổ biến được giải thích một phần ở đây bởi @supercat. C được viết để có thể di động trên các kiến trúc, trái ngược với lắp ráp thường được sử dụng để lập trình hệ thống tại thời điểm đó.
Tôi nghĩ rằng mục đích thiết kế ban đầu là mỗi loại khác với int là thứ nhỏ nhất có thể xử lý các số có kích cỡ khác nhau và đó là kích thước "mục đích chung" thực tế nhất có thể xử lý +/- 32767.
Đối với tôi, tôi đã luôn luôn sử dụng int
và không thực sự lo lắng về các lựa chọn thay thế. Tôi đã luôn nghĩ rằng đó là loại tốt nhất với hiệu suất tốt nhất, kết thúc câu chuyện. Nơi duy nhất tôi nghĩ chiều rộng cố định sẽ hữu ích là khi mã hóa dữ liệu để lưu trữ hoặc để truyền qua mạng. Tôi cũng hiếm khi thấy các loại chiều rộng cố định trong mã được viết bởi người khác.
Tôi có bị mắc kẹt trong những năm 70 hay thực sự có một lý do để sử dụng int
trong thời đại của C99 và hơn thế nữa?