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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2011, 21:11   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию нужно-ли преобразовывать типы

С++
Код:
double a = 3.14;
int b = 0;

b = a;

cout<<b;
выдаёт результат "3". я вроде читал что обязательно надо преобразовывать типы. НО почему всё и так работает, компилятор ошибки не выписывает???
или приведёный выше код, правильный и преобразование типов не нужно

и ещё вопрос:
static_cast годится для преобразования любых типов в любой или нет?
например:
Код:
int A, B;
double c, d;

A = static_cast<int>(c);
d = static_cast<double>(B):
этот код правильный??
Кароче говоря совсем запутался, вроде преобразовывать надо, но всё и так работает
SAMOUCHKA вне форума Ответить с цитированием
Старый 19.08.2011, 21:50   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
выдаёт результат "3". я вроде читал что обязательно надо преобразовывать типы. НО почему всё и так работает, компилятор ошибки не выписывает???
или приведёный выше код, правильный и преобразование типов не нужно
Ну, если программа с таким кодом скомпилировалась, то, значит, код правильный.
результат "3" он выдал из-за того, что вы целой переменной присваиваете значение вещественной, дробная часть которого не равна нулю. Происходит усечение дробно части и результат отображается без неё.

Цитата:
и ещё вопрос:
static_cast годится для преобразования любых типов в любой или нет?
например:
Код:
int A, B;
double c, d;

A = static_cast<int>(c);
d = static_cast<double>(B):
этот код правильный??
Честно скажу, такую конструкцию вижу впервые, но преобразование типов можно выполнять двумя способами (согласно книге Страуструпа) - традиционным и функциональным.

Традиционное:
Код:
(тип  к которому преобразуют)переменная, которую преобразуют
Функциональное:

Код:
тип  к которому преобразуют(переменная, которую преобразуют)

Последний раз редактировалось Вадим Мошев; 19.08.2011 в 21:57.
Вадим Мошев вне форума Ответить с цитированием
Старый 19.08.2011, 21:56   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
я вроде читал что обязательно надо преобразовывать типы
Читайте дальше. Есть такое понятие как "неявное приведение". Но обычно правилом хорошего тона считается явное приведеие, как показатель того, что именного этого и хотел программист.
p51x вне форума Ответить с цитированием
Старый 19.08.2011, 23:40   #4
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

да я и сам за явное приведение
а как на счет этого? правильно?
Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
и ещё вопрос:
static_cast годится для преобразования любых типов в любой или нет?
например:
Код:
int A, B;
double c, d;

A = static_cast<int>(c);
d = static_cast<double>(B);
этот код правильный??
SAMOUCHKA вне форума Ответить с цитированием
Старый 20.08.2011, 00:40   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Вадим Мошев, то в С, а в С++ такие кастинги.

ТС, да вполне правильно, хотя такие привидения можно в принципе опустить, они вполне стандартны.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовывать цветовые модели на С# Yura_KoT C# (си шарп) 1 01.04.2011 14:12
Как преобразовывать числа в текст? bluesman Microsoft Office Excel 4 25.09.2010 00:22
Типы Skrip Общие вопросы C/C++ 5 14.06.2009 19:24
Автоматически преобразовывать JPEG amigo555 Мультимедиа в Delphi 1 01.05.2009 20:18