動作環境
C (ideone gcc 6.3)
# include <stdio.h>
# include <stdint.h>
int main(void) {
int16_t val = 32764;
for(int loop=0; loop<10; loop++) {
printf("%d\n", val);
val++;
}
return 0;
}
実行結果
32764
32765
32766
32767
-32768
-32767
-32766
-32765
-32764
-32763
上記のvalに対してif (val > (24 * 60 * 60)
の判定をしても成立することはない。
1日は86400秒。
関連
- c++ builder > DWORDではまる > unsigned long型に対して負をとろうとしていた
- Grenning > たとえクロックが[ロールオーバー]しても(この場合、136年ごと)...
- secureCoding > ラップアラウンドを発生させない
教えていただいた事項
(追記 2018/07/26)
@tenmyo さんのコメントにおいて別のハマリ事象を教えていただきました。
情報感謝です。