我有一个像这样的字符数组:
uchar myBytes[4] = { 0x01, 0x23, 0x45, 0xFF };
增加最后一个元素的最简单/最好的方法是什么,将进位传播到早期元素?我的结果应该是
0x01, 0x23, 0x46, 0x00
答案 0 :(得分:1)
您可以增加从数组末尾开始的字节数,并将新值与旧值进行比较。如果它更小,那意味着(整数)和的转换已折叠在UCHAR_MAX上。
这是一个可能的代码:
0x01 0x23 0x46 0x00
它按预期给出:
{{1}}
草案n1570参考6.3.1.3有符号和无符号整数[转换](强调我的)
1当整数类型的值转换为_Bool以外的另一个整数类型时,if 该值可以用新类型表示,不变 2否则,如果新类型是无符号的,则通过重复添加或转换该值 减去一个可以在新类型中表示的最大值 直到该值在新类型的范围内。
答案 1 :(得分:1)
for (int i = 3; i >= 0; i--) if (++myBytes[i]) break;
这是我能想到的最简单的解决方案。