比较保存十六进制值C ++的Char

时间:2008-11-02 20:08:57

标签: c++ compare hex

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

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

如果char中保存的两个值相同,我将如何比较?我试过了

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

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

2 个答案:

答案 0 :(得分:11)

char只是一个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)//应该给我真实   但没有,任何帮助,谢谢!

不正确。为什么?

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

只要t和q的任何位是共同的,术语“if(t& q)”将返回true。

因此,如果t = 3,其为二进制00000011且q = 1,其为二进制00000001,那么(t& q)将返回true,即使知道它们不相等。

答案 1 :(得分:-8)

啊,我找到了解决方案:

if (t & q)