Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 1 / 1
Регистрация: 12.01.2018
Сообщений: 17
1

Преобразование типов

30.01.2018, 17:35. Показов 1448. Ответов 4
Метки нет (Все метки)

Допустим есть код:
C++
1
2
3
float fval; unsigned int ui; int ival; double dval;
fval = ui - ival * 1.0; //(1)
dval = ui * fval; //(2)
Правильны ли мои рассуждения:
(1) Сначала ival преоб. в double, затем операция умножения. Потом ui преоб. в double, происходит вычитание. Результат преоб. в float(с потерей точности) и присваивается fval.
(2) ui преоб. в float, затем умножение. Результат преоб. в double и присваивается dval.
Выдержка из учебника:
Остается случай, когда тип знакового операнда больше, чем беззнакового. В данном случае результат зависит от конкретной машины. Если все значения беззнакового типа соответствуют большему типу, то операнд беззнакового типа преобразуется в знаковый. Если значения не соответствуют, то знаковый операнд преобразуется в беззнаковый. Например, если операнды имеют типы long и unsigned int и размер и них одинаковый, операнд типа long будет преобразован в unsigned int. Если тип long окажется больше, то unsigned int будет преобразован в long.
Эт как понимать, на другой машине результат может быть другой?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2018, 17:35
Ответы с готовыми решениями:

Преобразование типов
Возможно ли преобразовать vector <Transport_Vehicle*> Cars_for_transportation в vector <MotorCar*>...

Преобразование типов.
Всем привет. Суть вопроса - ответ программы должен содержать только два знака после запятой. ...

Преобразование типов
Какое значение примет переменная x после выполнения следующего фрагмента программы при значениях...

Преобразование типов
Кто знает, как преобразуются друг в друга разные виды строк? Например, System::String ^ в...

4
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
30.01.2018, 17:41 2
Цитата Сообщение от Artvan Посмотреть сообщение
(1) Сначала ival преоб. в double, затем операция умножения. Потом ui преоб. в double, происходит вычитание. Результат преоб. в float(с потерей точности) и присваивается fval.
(2) ui преоб. в float, затем умножение. Результат преоб. в double и присваивается dval.
Да. Можете представлять выражения как деревья, в которых каждая стадия свёртки (замены выражения на его результат) может требовать соответствующих преобразований операндов:
Prolog
1
2
3
4
5
6
7
=
  fval:foat
  -
     ui: unsigned
     * 
        ival: int
        1.0: double
0
2 / 1 / 1
Регистрация: 12.01.2018
Сообщений: 17
30.01.2018, 17:47  [ТС] 3
alex white, Ок, спасибо. А как на счёт "результат зависит от конкретной машины" ?
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
30.01.2018, 17:51 4
Лучший ответ Сообщение было отмечено Artvan как решение

Решение

Artvan,
Ну, это вопрос не машины, а реализации языка и целевого кода. Ничего не мешает на одной и той же машине, к примеру, компилировать в машинные коды разных архитектур. Понаписано у вас в тексте несколько запутанно, видимо имеется в виду, что выбирается больший по размеру тип, а при равенстве - беззнаковый.
1
2 / 1 / 1
Регистрация: 12.01.2018
Сообщений: 17
30.01.2018, 17:55  [ТС] 5
alex white, Понятно, спасибо за пояснения.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2018, 17:55

преобразование типов
Уважаемые специалисты, у меня имеется одна проблема. Есть два числа. double и float. Надо из...

Преобразование типов
Вопрос по преобразованию строки в число , и наоборот . Например на форме расположен MaskedTextBox...

Преобразование типов
Цель копировать из одного объекта в другой инофрмацию, типы разные, поэтому приходится...

Преобразование типов
С учебника переписал код на применение структур, но возникла проблема с преобразованием типов. Вот...

Преобразование типов
Здравствуйте! Подскажите как преобразовать тип данных: World в double вот код DLL которую я пишу: ...

Преобразование типов
Подскажите пожалуйста. Есть класс для работы со строками class String // ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.