问题记录:无符号数据类型,加减运算仍然是无符号
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

浙公网安备 33010602011771号