Код (Text): #include <iostream> int main() { int style; int vredraw = 0x01; int hredraw = 0x02; style = hredraw > vredraw; std::cout << style; return 0; } почему выдается 1 а не 3?
В языке Си "упрощенная" типизация данных... В данном случае - результат булевого выражения "ИСТИНА" переведен в целочисленное - единица. В паскале\делфи за такие "изыски" компилятор посылает очень далеко
Нет, просто там есть неявные преобразования: булевый тип (которого фактически нет в сях, только в С++) в целочисленный, массив - в указатель на первый элемент, функция - в указатель на неё и т.п.
А кто Вам сказал что знак ">" (больше) переводится компилятором в команду "OR" (логическое или) Если уж на то пошло, то ассемблерный код будет выглядеть так Код (Text): mov eax,1 mov ebx,2 cmp eax, ebx setg eax PS - Не будем раздувать "священные" войны. К языкам с "жесткой типизацией" С и С++ не относятся - почитайте литературу.
Вот этот дядька: Ivor Horton со своей книгой. To use in setting the rightmost bit, you can define: For use in setting the second-to-rightmost bit, you could define the variable hredraw as: So you could set the rightmost two bits in the variable style to 1 with the statement:
У дядьки опечатка ))) Должно быть: Код (Text): style = hredraw | vredraw; И вообще, если он ТАКИМ образом объясняет побитовые операции - единственное резюме этой книги - "Ф ТОПКУ ЕЕ"! ))
А всё врубился. У Horton'а наверно кнопка вылетела поэтому он другой символ вфиндюрил censored, Ultrin Faern спасибо за быстрый ответ. ДЯДЬКУ Ф ТОПКУ