比较包含十六进制值C++的Char

Comparing Char which holds hex values C++

本文关键字:Char C++ 包含 十六进制 比较      更新时间:2023-10-16

在C++中,我有两个包含十六进制值的字符,例如:

char t = 0x4;
char q = 0x4;

如果char中的两个值相同,我该如何比较??我试过

if (t == q) // should give me true

但是没有,任何帮助,谢谢!

字符只是一个8位整数。使用十六进制或十进制文字初始化它并不重要,无论哪种情况,之后的char值都将相同。

因此:

char t = 0x4;
char q = 0x4;
if(t == q)
{
 //They are the same
}

相当于:

char t = 4;
char q = 4;
if(t == q)
{
 //They are the same
}

你提到上面的情况不是真的,但你的代码中一定有错误,或者t和q一定不一样。

你的建议

if(t==q)//应该给我true但是没有,任何帮助,谢谢!

不正确。为什么

t&q进行逐位比较,返回两个对齐的位都为1的值。

只要t和q的任何一个位是公共的,术语"if(t&q)"就会返回true。

因此,如果二进制00000011中的t=3和二进制00000001中的q=1,则即使知道它们不相等,(t&q)也将返回true。

啊,我找到了解决方案:

if (t & q)