Tôi biết rằng các tiêu chuẩn C và C ++ để lại nhiều khía cạnh của việc triển khai ngôn ngữ - được định nghĩa chỉ vì nếu có một kiến trúc với các đặc điểm khác, sẽ rất khó hoặc không thể viết trình biên dịch tuân thủ tiêu chuẩn cho nó.
Tôi biết rằng 40 năm trước, bất kỳ máy tính nào cũng có thông số kỹ thuật độc đáo của riêng nó. Tuy nhiên, tôi không biết bất kỳ kiến trúc nào được sử dụng ngày nay:
CHAR_BIT != 8
signed
không phải là bổ sung của hai (tôi nghe nói Java có vấn đề với cái này).- Điểm nổi không tuân thủ theo chuẩn IEEE 754 (Chỉnh sửa: Ý tôi là "không có trong mã hóa nhị phân của IEEE 754").
Lý do tôi hỏi là tôi thường giải thích cho mọi người rằng nó tốt mà C ++ không ban hành bất kỳ khía cạnh cấp thấp khác như các loại có kích thước cố định † . Điều này tốt bởi vì không giống như 'các ngôn ngữ khác', nó làm cho mã của bạn có thể di động khi được sử dụng một cách chính xác (Chỉnh sửa: bởi vì nó có thể được chuyển sang nhiều kiến trúc hơn mà không yêu cầu mô phỏng các khía cạnh cấp thấp của máy, ví dụ như hai số học bổ sung về ký hiệu + kiến trúc cường độ) . Nhưng tôi cảm thấy tồi tệ rằng tôi không thể chỉ vào bất kỳ kiến trúc cụ thể nào.
Vì vậy, câu hỏi là: kiến trúc nào thể hiện các tính chất trên?
† uint*_t
s là không bắt buộc.