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