Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 13.03.2011
Сообщений: 18

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

16.03.2011, 11:52. Показов 1715. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Спасайте! а то я щас повешусь от взрыва мозга!

Кто объяснит вот что это за фигня.
Когда я в программе пишу:
C++
1
2
3
char a = 0x64;
char b = 0x9B;
short int getted_check_sum = a*0x100+b;
она мне выдает результат "getted_check_sum =0x639B"

А когда
C++
1
getted_check_sum = 0x64*0x100+0x9B;
результат "getted_check_sum =0x649B" Т.е. тот который по логике и должен быть!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2011, 11:52
Ответы с готовыми решениями:

Почему не меняется true/false?
Добрый день! Написал простенькую программу с перегрузкой типов. 24 часовая система переводится в 12 часовую (с pm/am). У меня не...

[C/C++]Компилятор g++.Странности с true и false.Кто нибудь может прокомментировать/повторить это у себя?
Заметил такую странность: Это проходит компиляцию bool *b = false; А это нет bool *b = true; error: cannot convert ‘bool’ to...

Глюк false = true == true;
Возник глюк, пишу: result.isPlus = this->isPlus == numberBigSize.isPlus; Поля "this->isPlus" и "numberBigSize.isPlus" равны...

5
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
16.03.2011, 12:15
C++
1
2
3
4
5
6
7
8
9
#include <cstdio>
 
int main()
{
unsigned char a = 0x64;
unsigned char b = 0x9B;
short getted_check_sum = a*0x100+b;
printf( "%x", getted_check_sum );
}
1
2 / 2 / 0
Регистрация: 13.03.2011
Сообщений: 18
16.03.2011, 12:52  [ТС]
Спасибо, но не могли бы объяснить почему так?
Это получается что b было отрицательным? и вообще зачем символьному типу отрицательные значения?
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
16.03.2011, 13:50
Цитата Сообщение от Snaiffer Посмотреть сообщение
Это получается что b было отрицательным? и вообще зачем символьному типу отрицательные значения?
такова уж особенность, что в стандарте не определено какие значения может принимать char
-128 ... 127 или 0 ... 255
смысл, ну думаю в стародавнии времена когда память исчислялась килобайтами char использовали наравне с остальными типами для простых вычислений
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
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
16.03.2011, 17:35

Не по теме:

Цитата Сообщение от Snaiffer Посмотреть сообщение
я щас повешусь от взрыва мозга!
Доктор Плейшнер в пятый раз выпрыгивал из окна, но яд всё не действовал. (с)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2011, 17:35
Помогаю со студенческими работами здесь

Непонятная ошибка, кто объяснит?
Наткнулся на непонятную ошибку. Раньше код компилировался, теперь выдает ошибку. Для примера приведу небольшой тестовый вариант. ...

true and false
Уважаемые, программисты! Помогите, пожалуйста, с программой. Написать программу, которая печатает True или False в зависимости от...

False,True
Помогите пожалуйста. Составить программу, печатающую TRUE, если указанное высказывание является истинным, и FALSE в противном случае. ...

вывод true и false
Доброгов сем времени суток. Хотелось бы попросить помощи в решении этого задания, под цифрой 2, справа. треугольник у меня получился...

С++. вывод true/false
помогите пожалуйста, почему не робит прога. должна вывести 1 если символ введеный с клавы гласная буква русского алфавита, иначе 0. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ноутбук (на замену), о котором я и не подозревал, что он у меня появится.
Programma_Boinc 28.12.2025
Ноутбук (на замену), о котором я и не подозревал, что он у меня появится. Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием "Ноутбук (на замену), о котором я и не. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru