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