Cで次のコードを実行すると:
#include <stdint.h>
uint16_t a = 4000;
uint16_t b = 8000;
int32_t c = a - b;
printf("%d", c);
結果として「-4000」が正しく出力されます。しかし、私は少し混乱しています。より大きな符号なし整数を他の整数から減算すると、算術オーバーフローが発生するのではないでしょうか? ここではどのようなキャスティング ルールが適用されますか? この質問は少し初心者のようですので、参考にしていただければ幸いです。