Cの「標準」符号付き整数型(short、int、longなど)に対するすべての操作は、[TYPE_MIN、TYPE_MAX]間隔(TYPE_MIN、TYPE_MAXが最小および最大整数値)外の結果を生成する場合、未定義の動作を示します。それぞれ、特定の整数型で格納できます。
ただし、C99標準によれば、すべてのintN_t
タイプは2の補数表現を持つ必要があります。
7.8.11.1正確な幅
の整数型1.typedef名intN_tは、幅N、パディングビットなし、2の補数表現の符号付き整数型を指定します。したがって、int8_tは、正確に8ビットの幅を持つ符号付き整数型を示します。
intN_t
これは、整数のオーバーフローの場合にC99の型が明確に定義された動作を示すことを意味しますか?たとえば、このコードは明確に定義されていますか?
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
int main(void)
{
printf("Minimum 32-bit representable number: %" PRId32 "\n", INT32_MAX + 1);
return 0;
}