Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2012, 17:04   #1
Dady 1992
Пользователь
 
Регистрация: 22.06.2012
Сообщений: 11
По умолчанию Что это?

Подскажите, кто знает, что это?
Код:
int y;
y=int(x);
Dady 1992 вне форума Ответить с цитированием
Старый 27.06.2012, 17:16   #2
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Объявляется целая переменная y, затем ей присваивается, преобразованная в целое, некая переменная x.
rmv240899 вне форума Ответить с цитированием
Старый 27.06.2012, 17:35   #3
Fatal Error
Пользователь
 
Аватар для Fatal Error
 
Регистрация: 20.05.2012
Сообщений: 58
По умолчанию

иными словами это преобразование переменной Х к типу int
Fatal Error вне форума Ответить с цитированием
Старый 27.06.2012, 20:10   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от rmv240899 Посмотреть сообщение
Объявляется целая переменная y, затем ей присваивается, преобразованная в целое, некая переменная x.
Ответ не верный.

Цитата:
Сообщение от Fatal Error Посмотреть сообщение
иными словами это преобразование переменной Х к типу int
Ответ не верный.

Цитата:
Сообщение от Dady 1992 Посмотреть сообщение
Код:
int y;
y=int(x);
В правой части выражения - конструктор с параметром.
Рузультат правой части выражения - временный объект, инициализированный значением аргумента.

Далее, у объекта стоящего в левой части будет запущен operator=, аргументом которого будет является этот временный объект.

Так будет произведена процедура присвоения значения.

Поскольку участники вычисления - элементарные типы данных, то данная процедура будет оптимизирована.

(хотя компиль в любом случае умеет оптимизировать такие процедуры)

Последний раз редактировалось _Bers; 27.06.2012 в 20:12.
_Bers вне форума Ответить с цитированием
Старый 27.06.2012, 20:39   #5
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

_Bers, для базовых типов данных не вызываются конструкторы, и уж тем более operator=. int(x) это форма записи С-оператора приведения типа. Я откомпилировала код, именно на С++:
Код и результат

Последний раз редактировалось rmv240899; 27.06.2012 в 20:43.
rmv240899 вне форума Ответить с цитированием
Старый 27.06.2012, 20:46   #6
Fatal Error
Пользователь
 
Аватар для Fatal Error
 
Регистрация: 20.05.2012
Сообщений: 58
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
В правой части выражения - конструктор с параметром.
Рузультат правой части выражения - временный объект, инициализированный значением аргумента.

Далее, у объекта стоящего в левой части будет запущен operator=, аргументом которого будет является этот временный объект.

Так будет произведена процедура присвоения значения.

Поскольку участники вычисления - элементарные типы данных, то данная процедура будет оптимизирована.

(хотя компиль в любом случае умеет оптимизировать такие процедуры)
надо же на столько усложнить обычное преобразование типов
Fatal Error вне форума Ответить с цитированием
Старый 27.06.2012, 20:49   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
во-первых, новичкам такие подробности давать не нужно
Не согласен.
Цитата:
обычное преобразование типов
Это не преобразование типов.
Цитата:
Я откомпилировала код, именно на С++:
Одно дело откомпилировать, другое разобраться как всетки он работает:
y=int(x); вызывает функцию __ftol2. Это обычное округление с отбрасыванием.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.06.2012, 20:51   #8
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

В своем корне это преобразование, но ведь не конструктор!
rmv240899 вне форума Ответить с цитированием
Старый 27.06.2012, 21:02   #9
Fatal Error
Пользователь
 
Аватар для Fatal Error
 
Регистрация: 20.05.2012
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это не преобразование типов.
а что, балет??? как бы не была определена переменная Х она будет преобразована в тип int насколько это возможно

Последний раз редактировалось Fatal Error; 27.06.2012 в 21:04.
Fatal Error вне форума Ответить с цитированием
Старый 27.06.2012, 21:10   #10
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Это не конструктор, и конструктором быть не может. Можно записать и так:
Код:
int y;
y = (int)x;
И результат будет тот же.
rmv240899 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
<< >> & ^ | с чем это едят и что это такое? pufystyj Общие вопросы C/C++ 4 30.03.2011 13:59
Эквалайзер...что это? кто это? Можно ли с ним подружиться? .Phoenix Мультимедиа в Delphi 45 08.04.2010 23:37
Что это такое и как это того... Alex Cones Общие вопросы Delphi 2 11.10.2009 12:04