异或地问题
请问各位前辈,在c语言中char型的数据可以异或吗?
为什么我把2个char型的数据异或其中的有些位出结果有些位不出结果呢?
unsigned char scram(unsigned char x)
{
// unsigned char temp2[23];
int i;
unsigned char t1,t2;
unsigned char y;
y=x^(temp[17]^temp[22]);
t2=temp[0];
temp[0]=y;
for(i=1;i <23;i++)
{
t1=temp[i];
temp[i]=t2;
t2=t1;
}
return y;
}
请大家看看这是怎么了
[解决办法]
char型进行异或操作时先把char变量转换成int型后再进行异或运算
[解决办法]
位运算只针对int和char。
[解决办法]
不用自己转,运算的时候会隐式自动转换
你说有些位出结果有些位不出结果,是什么意思,说具体点,举个例子
[解决办法]
出现笑脸那是因为运算后ASCII的值> 127了
我看不明白你的程序在做什么,你说说你的程序的意图