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

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

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

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

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

char buf[512];
int i;

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

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