Rokiのチラ裏

学生による学習のログ

std::size_tに-1を代入した場合の挙動

値として-1をsize_tなどのunsigned integerへ代入(下記コードでは初期化)した時、同型の最大値となるとの事。また、その内容が規格として保証されているとの事。

constexpr std::size_t max=-1; // max==ULLONG_MAX in 64bit
constexpr unsigned int ov=max+1; // 0

当方の環境(64 bit)では値としてULLONG_MAXであったが環境によって同型の最大値は異なるため結果は異なる場合がある。*1


参考:c++ - Using -1 as a flag value for unsigned (size_t) types - Stack Overflow

*1:32bitであれば4294967295と定義されているはずである