Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1135 of 1492 menu
◀ ▶

Явное приведение

Сужение типа - double в int, long в int - требует записи (тип)значение. В блоке unchecked переполнение при cast обрезает старшие биты, а не бросает исключение. Это языковое приведение, не explicit operator своего типа.

Синтаксис

int num = (int)3.9; int narrow = unchecked((int)wide);

Пример

Давайте явно сузить double до int:

using System; class Program { static void Main() { double num = 3.9; int res = (int)num; Console.WriteLine(res); } }

Результат выполнения кода:

3

Пример

Давайте сузить long до int:

using System; class Program { static void Main() { long wide = 12345L; int res = (int)wide; Console.WriteLine(res); } }

Результат выполнения кода:

12345

Пример

Давайте увидеть переполнение в unchecked:

using System; class Program { static void Main() { long wide = 3000000000L; int res = unchecked((int)wide); Console.WriteLine(res); } }

Результат выполнения кода:

-1294967296

Смотрите также

  • приведение cast,
    с тем же синтаксисом скобок
  • приведение implicit,
    которое не требует cast
  • оператор explicit operator,
    который объявляют в своём типе
  • тип int,
    к которому сужают long и double
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить