使用 Microchip 18f4620 PIC。不过,这应该是一个标准的 ANSI C 问题。
说我有
unsigned int16 badFlow=65535 //max unsigned int16 value
这有一个二进制值1111 1111 1111 1111
。
如果我那时
badFlow++;
位模式变为1 0000 0000 0000 0000
17 位。显然badFlow == 0
,但额外的翻转位要么
- 被丢弃
- 或居住在任何地方
byte* flowPtr = &badFlow+2;
。
我假设后者,但希望前者。
我的问题:一位同事用计数器编写了一些错误的代码,该计数器已在所有生产的产品上溢出约 2 年。考虑到我们的客户对使用这些工具的收费,由于潜在的不良数据,这将带来几百万美元的风险。