Von C++ 11-Standard (Entwurf n3337) §5/9:Was bedeutet Rang in Bezug auf Typumwandlung?
- Wenn beide Operanden vom gleichen Typ sind, wird keine weitere Umwandlung ist benötigt.
- Andernfalls, wenn beide Operanden haben Integer-Typen unterzeichnet oder beide haben unsigned Integer-Typen, die Operanden mit der Art der geringeren integer Umwandlung Rang wird mit größer Rang auf den Typ des Operanden umgewandelt werden .
- Andernfalls, wenn der Operand, unsigned integer Typ hat rank größer als oder gleich dem rank des Typs des anderen Operanden, der Operand mit signierten Integer-Typ sind je nach Art umgewandelt werden, von der Operand mit vorzeichenlosen Integer-Typ.
- Andernfalls, wenn der Typ des Operanden mit signiertem Integer-Typ kann alle Werte von der Art des Operanden mit unsigned Integer-Typ darstellt, wird der Operand mit unsigned integer Typ seine den Typ umgewandelt von der Operand mit vorzeichenbehafteten Integer-Typ.
- Andernfalls müssen beide Operanden in den vorzeichenlosen Integer vom Typ konvertiert werden, der dem Typ des Operanden mit der Ganzzahl mit Vorzeichen entspricht.
Was bedeutet Rang in diesem Zusammenhang?
Sicherlich ist es nicht zu std::rank Bezug genommen wird,
als dass mit der Anzahl der Dimensionen in einem Array zu tun hat ...
in Form von integrierten Typen und Punkttypen schwimmen, ich denke, es auf ihre möglichen Größen bezieht sich .
Die C++ Standard garantiert, dass:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
bin ich recht dann davon ausgehen, dass die Reihen sind dann:
Rank
Type
1
char
2
short
3
int
4
long
5
long long
...
Ich konnte nirgends eine list finden, die die Rangstufe für jeden Typ beschreibt.
Siehe 4.13/p1 ([conv.rank]). – 0x499602D2
@ 0x499602D2 Yup, das war, was ich gesucht habe. –