Задать вопрос

Почему var привелся к int?

var x = 7 / 2; // = 3 (int)
Почему так произошло? Ведь по идее при делении мы получили 3.5 и var должен был стать double, но по итогу мы получаем int или это из-за того, что var x = 7.0/2.0 не записано и по первым цифрам оно решило стать int?
  • Вопрос задан
  • 215 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    SDP-030_PRG Продвинутая разработка в Microsoft .NET
    1 неделя
    Далее
  • Ulearn.me
    Проектирование на языке C#
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
7 - это int
2 - это int
int / int = int
Вот и всё.
Если хочется double, то надо писать 7.00 / 2.00
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
Евгений Семашко, Это не тонкости и приколы, а часть спецификации языка.
(Вот ссылка, если интересно).

Если в двух словах, для каждого оператора предусмотрено несколько перегрузок, в зависимости от типа операндов. В частности, для деления (подробнее здесь) предусмотрено целочисленное деление, деление с плавающей точкой (IEEE 754) и десятичное.

Здесь, поскольку оба операнда одного типа, применяется целочисленное деление. Чтобы использовать другую перегрузку, необходимо, чтобы хотя бы один из операндов был числом с плавающей точкой или десятичным.
7 / 2 = 3
7f / 2 = 3.5
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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