ご存知のように、符号付き整数オーバーフローは未定義の動作です。しかし、C ++ 11のcstdintドキュメントには興味深いものがあります。
幅がそれぞれ正確に8、16、32、64ビットで、パディングビットがなく、負の値に2の補数を使用する符号付き整数型(実装が型を直接サポートしている場合にのみ提供)
そして、ここに私の質問があります:標準では、、、および負の数は2の補数であると明示的に述べられているint8_tのでint16_t、これらのタイプのオーバーフローは未定義の動作ですか?int32_tint64_t
編集私はC ++ 11とC11標準をチェックしました、そしてここに私が見つけたものがあります:
C ++ 11、§18.4.1:
ヘッダーは、C標準の7.20と同じように、すべての関数、タイプ、およびマクロを定義します。
C11、§7.20.1.1:
typedef名は
intN_t、幅N、パディングビットなし、2の補数表現の符号付き整数型を指定します。したがって、int8_tは、正確に8ビットの幅を持つそのような符号付き整数型を示します。