С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Кто объяснит почему true == false ? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Чтение/запись http://www.cyberforum.ru/cpp-beginners/thread258286.html
какая буква в fopen, открывает файл на одновременное чтение/запись, причем если файл существует, то не стирает его
C++ Опишите структуру с именем STUDENT Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - обработка списка. Сначала в программе должен вводиться размер списка (целое число), а сам... http://www.cyberforum.ru/cpp-beginners/thread258279.html
C++ Комбинация условных выражений
Как короче, проще и правильнее записать следующую задачу. Если выполняется условие №1 проверять условие №2, в случае выполнения которого, проверять условие №3, в случае выполнения которого вывести...
error C4430, error C2143 C++
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию error C2143: синтаксическая ошибка: отсутствие "," перед "&" файл 1 #include...
C++ Ошибка в коде. Шаблоны http://www.cyberforum.ru/cpp-beginners/thread258245.html
Вот код: #include <iostream> #include <vector> #include <algorithm> #include <functional> template<class T> int Negative(const std::vector<std::vector<T> >& vc) {
C++ Ханойская башня Использование переборных методов (разработка программ решения задачи «Ханойская башня»). на С++ подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,852
Записей в блоге: 28
16.03.2011, 17:21
alex_x_x, всё-таки конкретно в данном случае следовало бы объяснить тем, что char - знаковый. Если в char присвоить 0x9b, то старший (знаковый) бит равен единице, а потому величина будет отрицательная. Когда пишешь a*0x100+b, то имеем такой раскалад, что a и b - char'ы, а константа 0x100 имеет тип int (по стандарту константа без каких-либо модификаторов является int'ом). В результате чего a и b предварительно конвертируются в int (после чего действительно начинает играть роль то, что b - отрицательное).

Выражения "0x64*0x100+0x9B" и "a*0x100+b" НЕ эквивалентны. В нашем случае правильно было бы писать ( ((char)0x64) * 0x100 ) + ((char)0x9b) тогда ты получишь эквивалентное выражение
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.