问题记录:无符号数据类型,加减运算仍然是无符号
A:我开始设的unsigned char m=5; -请问m-6>等于多少?
Q:在这种情况下,无符号字符 m
的值为 5
。当计算 m-6
时,由于 m
是无符号字符,所以 5-6
将被解释为模运算。因此,5-6
等于 255
(即 UINT_MAX
,unsigned char
类型的最大值加1)。
检查这个问题花了我半小时,我服了:
我还以为是keil出问题了,痛苦。。。。C语言忘完了
总结:对于无符号数据类型,加减运算仍然是无符号的。在无符号数据类型中,数学运算通常被定义为模运算,这意味着结果会回绕到 0 或最大值。因此,在无符号数据类型中,加减运算将按照模运算的规则进行。
作者QQ4577105