Знак и беззнаковые типы в C++
Число типа int можно записать в unsigned int.
Беззнаковый тип хранит только ноль и положительные
числа. Отрицательных значений у него нет.
Возьмем положительное 100 и запишем его
в беззнаковый тип. Число входит в диапазон
и остается собой:
int num1 = 100;
unsigned int num2 = num1;
std::cout << num2 << "\n"; // выведет 100
Теперь запишем отрицательное -1. Минус
в беззнаковую ячейку не кладется. Биты идут по кругу,
и на экране верхняя граница unsigned int:
int num1 = -1;
unsigned int num2 = num1;
std::cout << num2 << "\n"; // выведет 4294967295
То же случается в одном действии, если второе
число беззнаковое. Сложим -2 типа int
и 1 типа unsigned int. Перед сложением
минус становится огромным положительным:
-2 читается как 4294967294, плюс единица
дает 4294967295. Обычный счет дал бы -1.
Если минус нужен, число в беззнаковый тип не кладут
и с беззнаковым его не складывают:
int num1 = -2;
unsigned int num2 = 1;
std::cout << num1 + num2 << "\n"; // выведет 4294967295
Дана переменная:
int num = 40;
Запишите ее в unsigned int и выведите новую
переменную.
Дана переменная:
int num = -1;
Запишите ее в unsigned int и выведите новую
переменную.
Даны две переменные:
int num1 = -2;
unsigned int num2 = 1;
Найдите сумму этих переменных и выведите ее.