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

Преобразование знаковых и беззнаковых чисел в C#

Число типа int можно записать в uint. Беззнаковый тип хранит только ноль и положительные числа. Отрицательных значений у него нет.

Возьмем положительное 100 и запишем его в беззнаковый тип. Число входит в диапазон и остается собой:

int num1 = 100; uint num2 = (uint) num1; Console.WriteLine(num2); // prints 100

Теперь запишем отрицательное -1. Минус в беззнаковую ячейку не кладется. Биты идут по кругу, и на экране верхняя граница uint:

int num1 = -1; uint num2 = (uint) num1; Console.WriteLine(num2); // prints 4294967295

В одном действии C# ведет себя иначе, чем при записи в uint. Сложим -2 и 1 типа uint. Отрицательное int расширяется до long, счет обычный:

int num1 = -2; uint num2 = 1; Console.WriteLine(num1 + num2); // prints -1

Если перед сложением явно записать int как uint, минус снова превращается в огромное положительное. Плюс единица дает верхнюю границу uint:

int num1 = -2; uint num2 = 1; Console.WriteLine((uint) num1 + num2); // prints 4294967295

Дана переменная:

int num = 40;

Запишите ее в uint и выведите новую переменную.

Дана переменная:

int num = -1;

Запишите ее в uint и выведите новую переменную.

Дан следующий код:

int num1 = -2; uint num2 = 1; Console.WriteLine(num1 + num2);

Скажите, что выйдет на экран.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить