C语言之判断两个字节变量是否互补,怪现象

2019-12-27 19:02发布

两个字节变量A与B,断判是否互补

if((A^B)!=0x0ff) { 不互补的情况 }  //方法1

if(A !=(~B)) {  不互补的情况  }        //方法2

C = (~B);
if(A !=C) {  不互补的情况 }         //方法3



现在测试: A=0x00f ,B = 0x0f0

方法1和方法3 不会执行 { 不互补的情况 }, 方法2 执行了{  不互补的情况  }   。  望高手解答!这是什么情况
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lianglee
1楼-- · 2019-12-28 01:01
(A|B)!=0xFF,
flamma
2楼-- · 2019-12-28 01:55
 精彩回答 2  元偷偷看……
Gallen.Zhang
3楼-- · 2019-12-28 03:00
A,B是否都是一个字节?
比较之前,打印出来看下,看数据类型是否提升了?
jnyyygch
4楼-- · 2019-12-28 04:21
这个问题老生常谈,不知回复过多少次了,百度一下C语言整型提升的相关知识就知道怎么回事了
snoopyzz
5楼-- · 2019-12-28 08:38
8/16位机 ~0x00的结果是0xffff
32位机 ~0x00的结果是0xffffffff
以上就是原因
mcu5i51
6楼-- · 2019-12-28 13:12
是呀.问题在于0xff

一周热门 更多>