我不确定在使用无符号字符时何时必须担心溢出。这个案例很清楚:
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 e = (a - b) + (a - c);
所有三个变量都转换为浮点数吗?
是否有可能发生溢出的情况,即使分配给的变量是浮点数?如果e是浮点数、整数或其他任何值,规则是否相同?
此外,在这种情况下会发生什么:
int a = std::abs(a - b);