在C中增加char数组

时间:2018-02-04 09:23:35

标签: c arrays performance char increment

我有一个像这样的字符数组:

uchar myBytes[4] = { 0x01, 0x23, 0x45, 0xFF };

增加最后一个元素的最简单/最好的方法是什么,将进位传播到早期元素?我的结果应该是

0x01, 0x23, 0x46, 0x00

2 个答案:

答案 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;

这是我能想到的最简单的解决方案。