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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование переменных, из одного типа в другой. 
V
    Опции темы
Pentium02
Дата 11.12.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я новичок. Собственно чабж. Например как преобразовать int в char?
PM MAIL WWW ICQ   Вверх
Partizan
Дата 11.12.2006, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Код

int i = 0;
char c = (int)i;

это C-style

с++ style это <static_cast>,<dynamic_cast>,<reinterpret_cast>


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 12.12.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Partizan, ещё есть const_cast.


--------------------
PM MAIL ICQ Skype   Вверх
Anikmar
Дата 12.12.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Partizan @ 11.12.2006,  23:38)
Код

int i = 0;
char c = (int)i;
         ^^^^^^^^
         Интересный пример 


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

Чисто int к char можно в весьма ограниченных пределах (-128 +127)

Если исправить ошибку в примере, то так:

Код

int i = 0;
char c = (char)i;




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


Explorer
****


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

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



Любитель, а какое отношение Const_cast имеет к преобр. типа??
он же только снимает константность smile 


--------------------
Мой блог
PM MAIL WWW   Вверх
Гениальный123Робот
Дата 12.12.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Anikmar @ 12.12.2006,  18:16)
Чисто int к char можно в весьма ограниченных пределах (-128 +127)

Добавлю, что если в эти пределы не укладываетесь, то компилятор никакой ошибки не выдаст, а будет работать в "эффекте сворачивания", чтобы все же поместить свой остаток в заданный интервал.  
PM MAIL   Вверх
Partizan
Дата 12.12.2006, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



е-хе ))) и правда  smile  smile )

char c = (char) i;


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 14.12.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



vinter, const и volatile - атрибуты, определяющие тип (const int и int - это разные типы), именно ими занимается const_cast.


--------------------
PM MAIL ICQ Skype   Вверх
zabivator
Дата 14.12.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Любитель @ 14.12.2006,  17:41)
vinter, const и volatile - атрибуты, определяющие тип (const int и int - это разные типы), именно ими занимается const_cast.

+1
--------------------
#include <zabivator>int main( int, char * [] ){   while( Zabivator::жив() ) Zabivator::моск()++;   return 0;}
PM MAIL WWW ICQ   Вверх
Любитель
Дата 14.12.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



 smile 
zabivator, ты уже второй раз пишешь +1, а плюсик не давишь  smile  Впрочем всё сие не твои вопросы - согласен.


--------------------
PM MAIL ICQ Skype   Вверх
Xenon
Дата 14.12.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Любитель,  smile 
Плюс за помощь ставится, а не за согласие smile


--------------------
user posted image  
PM MAIL   Вверх
FelikZ
Дата 14.12.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

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



Привет люди!

А кто нибуть подскажет как можно преобразовать:

Код

struct A
{
    int x;
    bool y;
};
struct B
{
    int x2;
    bool y2;
};
int _tmain(int argc, _TCHAR* argv[])
{
    A a;
    B b;
    b=(B)a;
    return 0;
}


Так пишет: error C2440: 'type cast' : cannot convert from 'A' to 'B'.

Это сообщение отредактировал(а) FelikZ - 14.12.2006, 21:25


--------------------
user posted image
PM WWW ICQ Skype   Вверх
JackYF
Дата 14.12.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



FelikZ, структуры твои. Преобразование придется писать тоже тебе:

Например, сделай у B конструктор копирования, который принимает A:

Код

struct B
{
  int x2;
  bool y2;
  
  B( const A& a )
  {
    x2 = a.x;
    y2 = a.y;
  }
};

Как-нибудь так.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
FelikZ
Дата 14.12.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

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



Спасибо JackYF!
Все работает smile 


--------------------
user posted image
PM WWW ICQ Skype   Вверх
Rockie
Дата 15.12.2006, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Xenon @  14.12.2006,  19:17 Найти цитируемый пост)
Плюс за помощь ставится, а не за согласие 

Xenon, ну, насчет этого правил нет. imho плюс можно ставить когда считаешь нужным smile

FelikZ, можно поинтересоваться что ты хочешь сделать? 
Код
int _tmain(int argc, _TCHAR* argv[])
{
    A a;
    A b;
    b=a;
    return 0;
}

и все.
А если в твоих классах будут указатели, то тогда уже понадобится конструктор копирования и перегруженное присваивание. 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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