いくつかの値を出力したいとします。TMin
符号付き変数がand TMax
(この場合は 4 バイトの int、0x7FFFFFFF
asTmax
および0x80000000
asを使用)を超えた場合、整数オーバーフローが発生するはずですTmin
が、これらの例では期待どおりの結果が得られません (コメントで説明されています)。
// Tmax = 0x7FFFFFFF == 2147483647
// Tmin = 0x80000000 == -2147483648
printf("1- overflow test: %d\n", 0x7FFFFFFF+1 ); // overflow - how compiler finds out it's a signed value, not an Unsigned one
printf("2- overflow test: %d\n", 0x80000000-1 ); // in contrast, why I am not getting an integer overflow here
printf("3- overflow test: %d\n", (int) 0x80000000-1 ); // overflow (Expected)
printf("4- overflow test: %d\n",(int) (0x7FFFFFFF+1)); // overflow (Expected)