int main()
{
int a = '-' ^ '+';
cout << a;
return 0;
}
此代码的输出是什么?请解释一下,我知道xor如何处理数字,但是像这样使用这段代码的输出是什么,并解释如何?
答案 0 :(得分:1)
“-”和“ +”是字符(用单引号表示)。
字符是继承的整数,表示ASCII中的字符位置。
'-'= 45,'+'= 43。
所以您的代码与45 ^ 43相同。
内部将它们转换为二进制:
45 = 00101101, 43 = 00101011
然后对它们执行异或运算,结果
000110
,然后又返回int(110二进制=十进制的6)并分配给整数a。
在c中进行测试:
int a = '-' ^ '+';
printf("%d", a); //%d is to print it as a number
给出结果6,就像我的解释一样。