无符号整数溢出由C和C++标准很好地定义.例如,C99标准(§6.2.5/9)声明
涉及无符号操作数的计算永远不会过度流动,因为无法用结果无符号整数类型表示的结果将以比结果类型可以表示的最大值大1的数量为模.
但是,这两个标准都声明有符号整数溢出是未定义的行为.再次,从C99标准(§3.4.3/1)
未定义行为的一个示例是整数流上的行为
这种差异是否存在历史或(甚至更好!)技术原因?
是否值得使用C的位域实现?如果是的话,什么时候使用?
我正在查看一些仿真器代码,看起来芯片的寄存器没有使用位字段实现.
这是出于性能原因(或其他原因)而避免的吗?
是否仍然使用位字段?(即固件放在实际芯片上等)
以下C++代码是什么意思?
unsigned char a : 1;
unsigned char b : 7;
Run Code Online (Sandbox Code Playgroud)
我猜它会创建两个char a和b,并且它们都应该是一个字节长,但我不知道":1"和":7"部分是做什么的.