Từ C++ 11 tiêu chuẩn (dự thảo n3337) §5/9:Xếp hạng có ý nghĩa gì liên quan đến chuyển đổi loại?
- Nếu cả hai toán hạng có cùng loại, không có chuyển đổi nữa là cần thiết.
- Ngược lại, nếu cả hai toán hạng đã ký các kiểu nguyên hoặc cả hai đều có loại unsigned integer, các toán hạng với kiểu số nguyên ít chuyển đổi rank sẽ được chuyển đổi sang kiểu của toán hạng với hơn rank .
- Ngược lại, nếu các toán hạng có kiểu dữ liệu integer unsigned có rank lớn hơn hoặc bằng với rank của loại toán hạng khác, các toán hạng với kiểu số nguyên ký sẽ được chuyển đổi sang các loại của toán hạng có loại số nguyên không dấu.
- Ngược lại, nếu kiểu của toán hạng với kiểu số nguyên ký thể đại diện cho tất cả các giá trị của các loại toán hạng với unsigned loại số nguyên, các toán hạng với kiểu dữ liệu integer unsigned sẽ chuyển đổi sang các loại toán hạng với kiểu số nguyên đã ký.
- Nếu không, cả hai toán hạng phải được chuyển thành số nguyên không dấu tương ứng với loại toán hạng với số nguyên đã ký.
Thứ hạng có ý nghĩa gì trong ngữ cảnh này?
Chắc chắn nó không đề cập đến std::rank,
như đã làm với số lượng kích thước trong một mảng ...
Xét về loại tách rời và các loại dấu chấm động, tôi nghĩ rằng nó đề cập đến kích thước tiềm năng của mình .
Các đảm bảo tiêu chuẩn C++ rằng:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
tôi phải đảm nhận sau đó rằng hàng ngũ này sau đó được:
Rank
Type
1
char
2
short
3
int
4
long
5
long long
...
Tôi chưa thể tìm thấy số list ở bất kỳ đâu mô tả cấp bậc xếp hạng cho từng loại.
Xem 4.13/p1 ([conv.rank]). – 0x499602D2
@ 0x499602D2 Yup, đó là những gì tôi đang tìm kiếm. –