Dyikot
@Dyikot

Почему тут требуется cast double -> int?

const Style ImageStyle =
{
	.Width = static_cast<int>(_height * 0.75),
	.Height = _height,
	.Background = Colors::Green,
	.BackgroundOnHover = Colors::Lightgreen
};

_height и Width - типа int.

А вот другой пример, где нету ошибки.
SDL_Point newPosition;

const auto [x, y] = GetRotationCenter(_type);
const auto cos90 = cos(std::numbers::pi / 2);
const auto sin90 = sin(std::numbers::pi / 2);

for(auto& cell : _cells)
{
	newPosition.x = (cell.Position.x - x) * cos90 - (cell.Position.y - y) * sin90 + x;
	newPosition.y = (cell.Position.x - x) * sin90 + (cell.Position.y - y) * cos90 + y;
	cell.Position = newPosition;
}


Тут newPosition.x и newPosition.y - int, а cos90 и sin90 - double
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Вообще, преобразование из double в int - это не ошибка. Это warning (и то, он выводится, только если компилятору указать -Wconversion. Код выше этот варнинг выдает во втором месте, но все-равно компилируется.

Если у вас преобразование умышленное, и вы знаете, что там не будет ошибки переоплнения, то вы можете использовать static_cast тогда компилятор не будет выдавать предупреждение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы