在考虑上溢和下溢的同时,在 C++ 中递增/递减字节的最佳方法是什么?例如,我有:
char c = random byte;
c += 0xB;
如果 c <= 0xF4,这将很好地工作,但任何高于此的值都会导致溢出。同样,如果它是 c -= 0xB; 并且 c < 0xB,将发生下溢。
假设c = 0xFF,相加后会是0xA吗?同样下溢,如果 c = 0,结果会是 0xF5 吗?
此外,由于一些奇怪的原因,当我增加特定数字时,会出现奇怪的结果。例如,如果我将 0x0 增加 0xA,则使用以下代码:
c = (c + 0xA) & 0xFF;
结果是:0x0D 0x0A 而不仅仅是 0x0A... 如下图所示:
而所有其余的字节都正确增加。