int类型的数据&0xff会变成什么类型?

char buf[512];
int i;
if (buf[i] != (i & 0xff))

问题:i & 0xff结果会变成什么类型?

结果显示buf[i] = 0x80和 i = 0x80居然不相等,是不是符号的问题?

c

3个回答

&是“位与操作符”,i&0xff使得i只剩下最低的8位值,而其它位均被值为0.
int的类型是不会变的,只是他的值变了。

a353249573
a353249573 结果显示buf[i] = 0x80和 i = 0x80居然不相等
3 年多之前 回复

char buf[512];
int i;

这两个都没有赋值,你确定你能正常运行??

这应该和符号关系不大,因为double,float,int是相等的,当char在标准ASCII字符内相等,而扩展ASCII 字符不相等,难道是微软不支持扩展ASCII字符,
不懂,!=操作符源码,你看看你能不能找到。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问