mardi 8 septembre 2020

Integer promotion between unsigned and int

Here

std::string s{ "aa" }; s.length - 3;  // == very large number

From memory, C's integer promotion rules (idk about C++) produce a type wide enough to fit the result of the calculation and favour unsigned types (for the extra bit of width). But 3 is of type int (right?). So why is the result of type unsigned instead of int or long? unsigned is certainly not wide enough to capture the result of the expression!

Aucun commentaire:

Enregistrer un commentaire