请教一下C语言中按位取反~的使用
#include<stdio.h>intmain(void){unsignedchari=0,j=0;i=0xFF;j=0x00;if(i==~j){printf("正确...
#include <stdio.h>
int main(void)
{
unsigned char i = 0, j = 0;
i = 0xFF;
j = 0x00;
if(i == ~j)
{
printf("正确\n");
}
else
{
printf("错误\n");
}
return 0;
}
这道题的答案是什么 展开
int main(void)
{
unsigned char i = 0, j = 0;
i = 0xFF;
j = 0x00;
if(i == ~j)
{
printf("正确\n");
}
else
{
printf("错误\n");
}
return 0;
}
这道题的答案是什么 展开
展开全部
错误 i = 0xFF ~j=0xFFFFFFFF 所以不相等
定义 改成char i = 0, j = 0; 则输出正确
定义 改成char i = 0, j = 0; 则输出正确
更多追问追答
追问
j不是unsigned char类型的吗?为什么按位取反以后数据类型都变了
追答
按位取反默认变成有符号的了 也就是~j =-1了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
错误
i=255
j=0
~j=-1
i=255
j=0
~j=-1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i = 0xFF;
j = 0x00;
~j返回0xffffffff
所以i==~j是不成立的
j = 0x00;
~j返回0xffffffff
所以i==~j是不成立的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然是无符号的字符类型,这个应该是printf 正确
追问
可是答案是“错误”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询