Символ - это просто 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, даже если они не равны.