Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Является ли затратным приведение типов? 
:(
    Опции темы
manking
Дата 16.11.2011, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



например 
char * массив;

функция( (unsigned char *)массив  );

1) Такое приведение предназначено для компилятора или выполняется по ходу выполнения?
2) Функция отработает за такое же время как и без приведения?


PM MAIL   Вверх
volatile
Дата 16.11.2011, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



не затратно.
ваше приведение а частности, абсолютно не затратно. Оно лишь говорит компилятору как интерпретировать.
PM MAIL   Вверх
manking
Дата 16.11.2011, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(volatile @ 16.11.2011,  02:18)
не затратно.
ваше приведение а частности, абсолютно не затратно. Оно лишь говорит компилятору как интерпретировать.

А если из void *?
void * указатель;

do
{
... =  *(std::string*)указатель;
... = *(int*)указатель2;
}


PM MAIL   Вверх
volatile
Дата 16.11.2011, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



manking, не затратно.  smile 

PM MAIL   Вверх
manking
Дата 16.11.2011, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(volatile @ 16.11.2011,  02:36)
manking, не затратно.  smile

Спасибо.  smile 
PM MAIL   Вверх
azesmcar
Дата 16.11.2011, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



manking

Затратно только динамическое приведение типов, т.е. dynamic_cast.
PM   Вверх
borisbn
Дата 16.11.2011, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



manking, такое приведение может быть очень и очень затратным (с точки зрения затрат человеческих, а не ЦП), если допустить логическую ошибку.
Например
Код
std::string str = "bla bla";
char * p = (char*)(&str);

Такой код скомпилируется без ошибок и дай бог, если вылетит при первом использовании.
Короче, в идеале желательно обходиться без такого рода приведений. Максимум static_cast.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mes
Дата 16.11.2011, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



borisbn, а тс точно в курсе про С++ ? smile 


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 16.11.2011, 09:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



mes, не знаю, но ружьё, думаю, стОит отобрать сразу  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
rumit7
Дата 16.11.2011, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.6.2011

Репутация: 6
Всего: 7



Цитата(manking @ 16.11.2011,  01:57)
например 
char * массив;

функция( (unsigned char *)массив  );

1) Такое приведение предназначено для компилятора или выполняется по ходу выполнения?
2) Функция отработает за такое же время как и без приведения?

Вот здесь в пункте 7.11 обсуждается стоимость различных приведений типов.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.