Сравнение Char, который содержит шестнадцатеричные значения C ++ - PullRequest
1 голос
/ 02 ноября 2008

в C ++ У меня есть два символа, содержащие шестнадцатеричные значения, например ::1001

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

Как бы я сравнил, если бы два значения, содержащиеся в символе, были одинаковыми ?? Я пытался

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

но нет, любая помощь, спасибо!

Ответы [ 2 ]

11 голосов
/ 02 ноября 2008

Символ - это просто 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.

Термин «if (t & q)» вернул бы true, если любой из битов t и q является общим.

так что если t = 3, который находится в двоичном 00000011, и q = 1, который находится в двоичном 00000001, то (t & q) вернет true, даже если они не равны.

0 голосов
/ 02 ноября 2008

Ах, я нашел решение:

if (t & q)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...