C语言 异或 运算符的使用

Python09

C语言 异或 运算符的使用,第1张

异或的意思就是相异为真。。

现在问题主要是出现在这一句。。

b[--i]=a[j]^a[--j]

注意啦。。编译器编译的时候是从后向前的。。也就是先算a[--j],这样j就先自减了。。j从3变为2。。然后再算a[j],因为j是2,调用的时候,就是调a[2]

所以整个语句第一次执行的时候就是b[2]=a[2]^a[2],结果显然是0;

所以输出的是1100

你是打算对数字进行异或,需要将字符变成数字,异或完后再变回字符

我只简单写了一下,没有异常处理,顺便说你b中F少了一个

#include <stdio.h>

int ctoi(char c)

{

if(c>='0'&&c<='9')

return c-48

else if(c>='A'&&c<='F')

return c-55

else if(c>='a'&&c<='f')

return c-87

else

return -1

}

char itoc(int i)

{

if(i>=0&&i<=9)

return i+48

else if(i>=10&&i<=15)

return i+55

else

return 0

}

int main()

{

char *a="0000400000123456"

char *b="0592389FFFFFFFFF"

char *c="0000000000000000"

int i=0

int ai,bi,ci

while(a[i])

{

ai=ctoi(a[i])

bi=ctoi(b[i])

ci=ai^bi

c[i]=itoc(ci)

i++

}

printf("%s\

",c)

return 0

}