unsigned char を使用する場合、いつオーバーフローを心配する必要があるかわかりません。この場合は明らかです。
uint8_t a = 3;
uint8_t b = 6;
uint8_t c = a - b; // c is 253
ただし、ここで何が起こるか:
float d = a - b; // d is -3
減算を行う前に a と float の両方を float に変換しますか?
または、この場合も:
float e = (a - b) + (a - c);
3 つの変数はすべて float に変換されていますか?
割り当てられている変数が float であっても、オーバーフローが発生する可能性はありますか? eがfloat、int、またはその他の場合、ルールは同じですか?
また、次のような場合はどうなりますか。
int a = std::abs(a - b);