Tôi đã nhận thấy một số thay đổi từ ngữ cho mục 5.6 cho C++ 11. (Tôi đang xem dự thảo tiêu chuẩn C++ N3242, ngày 2011-02-28.) Tiêu chuẩn (dự thảo) mới bao gồm câu:Phân số nguyên trong C++ 11
"Đối với toán hạng tích phân, toán tử tạo ra thương số đại số với bất kỳ phần phân số nào bị loại bỏ ; "
Tuyên bố này không nằm trong 5,6 của tiêu chuẩn 03 (ISO-IEC-14882-2003), nhưng tôi không nghĩ đây là một thay đổi, phải không? Đây là cách C và C++ đã làm việc trong nhiều năm, trừ khi tôi đã mất trí (có thể đã xảy ra).
Điều này sẽ tạo sự khác biệt lớn trong mã của tôi. Điều này có nghĩa là dấu hiệu của kết quả '%' cũng được định nghĩa bây giờ không? – ThomasMcLeod
@ThomasMcLeod: Vâng, toàn bộ '/'/'%' điều bây giờ được định nghĩa để hành xử giống nhau ở mọi nơi. Bạn có chắc chắn nó tạo sự khác biệt trong mã của bạn không? Việc triển khai của bạn có phải là một trong số ít người không cắt xén không? – PlasmaHH
Có ít nhất hai cách giải thích toán tử mô-đun. Cách phổ biến hơn chỉ đơn giản là phần còn lại của bộ phận. Trong trường hợp này, dấu hiệu của kết quả giống như dấu hiệu của thương. Ví dụ: '-5% -4 == 1 && -5% 4 == -1'. Một cách khác là cách đại số, trong đó toán tử mod trả về lớp đồng dư của toán hạng.Trong trường hợp này, 'a% m == b' nếu và chỉ khi' m' chia '(b - a)' và được xác định trong đó 'm' là số dương. Đây. 'b' là một số không âm nhỏ hơn' m', và vì vậy '-5% 4 == 3'. – ThomasMcLeod