2008-11-02 1 views
1

C++ в C++ я два символа холдингового шестнадцатеричных значений т.да .:Сравнивая Char, который имеет шестнадцатиричное значение

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

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

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

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

+0

Подождите, здесь что-то не так. Это должно и выполняется, если ветвь условного. Нам нужен больше контекста. Ваш ответ «a & b» неверен - это будет «истинно» для любых перекрывающихся битов в представлении a и b – 2008-11-02 20:19:31

+0

Это должно работать. Почему вы думаете, что это не так? – 2008-11-02 20:45:21

ответ

11

полукокса является всего лишь 8-битовым целым числом. Неважно, если вы инициализировали его шестнадцатеричным или десятичным литералом, в любом случае значение символа будет таким же.

Итак:

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 
} 

Вы упоминали, что выше, не является правдой, но вы должны иметь ошибку в коде или т и д не должны быть тоже самое.

Что вы предложили ...

если (т == д) // должны дать мне истинное но нет, любая помощь, спасибо!

не подходит. Зачем?

т & д делает сравнение побитовое, возвращает значение, где оба выравненные биты 1.

Термин «если (т & д)» будет возвращать истинным до тех пор, как любой из битов и т q являются общими.

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