【发布时间】:2019-10-04 12:38:20
【问题描述】:
我有两个 char 数组 A 和 B。我想对这两个数组执行按位异或。但是输出显示一个垃圾值。我哪里错了?
我尝试在char 中对输出进行类型转换,因为array A 和array B 在ASCII 中包含0 and 1。但它不起作用。
#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,但我得到的输出是垃圾。
【问题讨论】:
-
可打印的 ASCII 字符从 32 开始。您正在尝试打印 ASCII 字符 0 和 1。要将值输出为整数,请将它们转换为例如
int. -
XOR[i]的类型已经是char。将其转换为char没有任何作用。 -
我认为在这种情况下重复标记不合适。
-
@YesThatIsMyName 你能解释一下你为什么这么认为吗?解决方案是完全相同的,并且副本还尝试打印“异常”ASCII 字符(127 以上)并期望得到数字输出(由于某种原因,以十六进制表示,诚然,没有任何答案可以考虑)。根本问题仍然是“
char打印为 ASCII 字符,而不是整数”。如果您能找到更好的副本,请告诉我,我相信至少还有 10 个。有了这里的答案,我们又得到了另一个副本。 -
@MaxLanghof 因为他使用 char 并不意味着使用 chars 是正确的...... char 只是数字的错误类型。在我看来,他只是没有意识到这一点。这就是为什么我的回答告诉他使用整数数组......这改变了整个主题,并且与将 ASCII 字符打印为整数无关。在我们真正知道他为什么使用 char 之前,我们不能说它是重复的。
标签: c++ arrays xor bitwise-xor