我有两个char数组A和B。我想在这两个数组上执行按位异或。但是输出显示为垃圾值。我要去哪里错了?
由于char
和array A
在array B
中包含0 and 1
,所以我尝试在ASCII
中进行输出类型转换,但这没用。
#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
char A[4] = {0,1,1,0};
char B[4] = {1,1,1,0};
char XOR[4];
cout<< " PRINTING "<<endl;
for(int i =0; i<4; i++)
{
XOR[i] = (char)(A[i]^B[i]);
cout<<(char)XOR[i];
}
cout<<endl;
}
预期输出为1000,但我得到的输出是垃圾。
答案 0 :(得分:1)
char
的流运算符将数据视为字符,而不是数字。如果要将它们打印为数字,则必须将它们转换为数字以进行打印:
cout<< static_cast<int>(XOR[i]);
答案 1 :(得分:0)
一种解决方案是使用整数数组使其按需工作。 字符是“字母”的类型,而不是数字。
这是一种可能的解决方案:
#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
int A[4] = {0,1,1,0};
int B[4] = {1,1,1,0};
int XOR[4];
cout << " PRINTING "<< endl;
for(int i=0; i<4; i++)
{
XOR[i] = A[i]^B[i];
cout<<XOR[i];
}
cout<<endl;
}