Беззнаковые целые числа C++

Возврат массива из функции C++ Программирование и разработка

Целочисленный тип данных в C ++ подразделяется на множество подтипов. Одним из таких подтипов являются целые числа без знака. Целые числа без знака могут хранить только положительные целые числа. Целые числа без знака в C ++ предпочтительнее при манипулировании битами в операционных системах, поскольку у вас ограниченное пространство для хранения. Более того, они также могут использоваться для индексации массива, поскольку индекс массива никогда не может быть отрицательным. Эта статья посвящена обсуждению беззнаковых целых чисел в C ++ в Ubuntu 20.04.

Размер беззнаковых целых чисел в C ++:

Размер типичного целого числа без знака в C ++ составляет 4 байта. Чтобы убедиться в этом, вы можете взглянуть на следующий фрагмент кода:

После выполнения этого фрагмента кода C ++ мы получили результат

В этом фрагменте кода мы только что использовали оператор «cout» с функцией «sizeof». Параметр, который мы реализовали для этой функции, — unsigned int. Это означает, что этот оператор вернет размер беззнакового целого числа в байтах.

После выполнения этого фрагмента кода C ++ мы получили результат, показанный на следующем изображении, который подтверждает, что целое число без знака в C ++ имеет размер 4 байта:

мы получили результат, показанный на следующем изображении, который подтв

Как объявить беззнаковое целое число в C ++?

Целые числа без знака можно очень легко объявить в C ++. Вы можете увидеть следующий фрагмент кода, объявляющий беззнаковое целое число на C ++ в Ubuntu 20.04:

Читайте также:  Проверка соответствия строки регулярному выражению в JavaScript

Целые числа без знака можно очень легко объявить в C ++

В этом фрагменте кода мы объявили целое число без знака с помощью оператора «unsigned int var» и присвоили ему значение «255». Затем мы использовали оператор cout для отображения значения этого целого числа без знака на терминале.

В этом фрагменте кода мы объявили целое число без знака с помощью оператора «unsigned int var»

В каких сценариях следует избегать использования беззнаковых целых чисел в C ++?

Существуют определенные ситуации, в которых следует строго избегать использования целых чисел без знака в C ++, потому что это может привести к очень ошибочным выводам. Эти ошибки нельзя обнаружить, просто взглянув на код C ++. Более того, они также не могут быть обнаружены во время компиляции. Вместо этого вы сможете отловить эти ошибки только после того, как выполните свой код на C ++. Давайте рассмотрим некоторые из этих сценариев, чтобы вы могли избежать использования беззнаковых целых чисел в C ++ в этих случаях.

Сценарий 1: присвоение отрицательного числа целочисленной переменной без знака

Целые числа без знака используются для хранения только неотрицательных целых чисел. Однако программист может присвоить отрицательное число целочисленной переменной без знака. Это отрицательное число всегда округляется до ближайшего числа в пределах диапазона. Эта концепция известна как упаковка по модулю. В этом случае ошибки не возникает, но полученное вами значение определенно неверно. Вы можете просмотреть следующий фрагмент кода, чтобы понять это:

Целые числа без знака используются для хранения только неотрицательных целых чисел

В этом фрагменте кода мы присвоили значение «-1» целочисленной переменной без знака. Затем, чтобы проверить, правильное ли значение напечатано на терминале или нет, мы использовали оператор «cout» с переменной «var».

После выполнения этого кода мы узнали, что значение беззнаковой целочисленной переменной стало «4294967295» вместо «-1», как показано на изображении ниже:

что значение беззнаковой целочисленной переменной стало «4294967295»

Сценарий 2: Выполнение вычитания двух беззнаковых целых чисел, в которых вычитаемое число больше, чем вычитаемое число

Каждый раз, когда мы выполняем вычитание двух целых чисел в ситуации, когда первое число меньше второго, мы всегда получаем отрицательный результат. Следовательно, в этой ситуации мы никогда не должны использовать целые числа без знака. Следующий фрагмент кода демонстрирует это:

Каждый раз, когда мы выполняем вычитание двух целых чисел в ситуации

В этом фрагменте кода у нас есть два целых числа без знака, «var1» и «var2», значения которых равны «2» и «7» соответственно. Мы хотели вычесть «2» из «7». Результат вычитания — «-5». Однако вам нужно будет выполнить этот фрагмент кода, чтобы выяснить, как это вычитание работает с целыми числами без знака.

Выполнение этого фрагмента кода дало результат, показанный на следующем изображении. Опять же, хотя мы не получили никаких сообщений об ошибках, наши результаты все равно оказались неверными.

Выполнение этого фрагмента кода дало результат, показанный на следующем изображении

Сценарий 3: Использование беззнаковых целых чисел с условными операторами

Есть некоторые условия, которые выполняются, когда одна переменная меньше другой. Однако, если мы сравним отрицательные и положительные числа при использовании беззнаковых целых чисел, результат может быть неожиданным. Чтобы прояснить это, мы разработали следующий фрагмент кода:

Есть некоторые условия, которые выполняются, когда одна переменная

В этом фрагменте кода у нас есть две целочисленные переменные без знака, «var1» и «var2», значения которых равны «-1» и «1» соответственно. Затем у нас есть оператор «if», который будет выполнен, если «var1 <var2», что логически верно. Однако, поскольку мы использовали целые числа без знака, тогда «var1» будет преобразовано в ближайшее целое число без знака и станет больше, чем значение «var2». В связи с этим будет выполнен оператор else.

Чтобы засвидетельствовать это, вы можете увидеть результат, показанный на следующем изображении. В этом выводе указано, что «var1» не меньше «var2», что логически и математически неверно:

В этом выводе указано, что «var1» не меньше «var2»

Сценарий 4: Вызов функций с целыми числами без знака

Иногда вы определяете такие функции, которые принимают целые числа без знака в качестве параметров. Опять же, если кто-то передаст отрицательное значение этой функции, она все равно будет вызываться, но выдаст неверные результаты. Чтобы изобразить это, мы реализовали следующий фрагмент кода:

В этом фрагменте кода у нас есть функция с именем «DisplayNumber»

В этом фрагменте кода у нас есть функция с именем «DisplayNumber», которая принимает целое число без знака «num». В этой функции мы просто хотим вывести значение этого числа на терминал. Также в  нашей функции main () мы вызвали эту функцию с номером «-1».

Вы можете увидеть вывод этого фрагмента кода на изображении, показанном ниже. Согласно этим выходным данным, значение числа — «4294967295» вместо «-1»:

Вы можете увидеть вывод этого фрагмента кода на изображении, показанном ниже

Сценарий 5: Использование беззнаковых целых чисел в качестве счетчиков цикла

В последнем сценарии мы будем использовать целое число без знака в качестве счетчика цикла в C ++. Вы можете увидеть это из следующего фрагмента кода:

В последнем сценарии мы будем использовать целое число без знака

В этом фрагменте кода мы определили простой цикл for, итератором которого является целое число без знака, и мы уменьшали это целое число без знака на каждой итерации. Мы застряли в бесконечном цикле, когда выполняли этот код, как вы можете видеть из результатов, показанных ниже. Это произошло исключительно потому, что в последней итерации, когда значение итератора было уменьшено до «-1», вместо разрыва цикла этот итератор был преобразован в ближайшее целое число без знака, значение которого было больше «5». Это продолжалось на каждой итерации, поэтому мы получаем такой результат.

В этом фрагменте кода мы определили простой цикл for, итератором которого является целое

Заключение

В этой статье мы хотели поговорить о различных аспектах использования целых чисел без знака в C ++ в Ubuntu 20.04. Сначала мы поделились с вами размером беззнаковых целых чисел в C ++, а затем их объявлением. После этого мы объяснили различные сценарии, в которых следует строго избегать использования беззнаковых целых чисел, выделив проблемы, которые они могут вызвать. Поэтому, прочитав эту статью, вы легко сможете различить ситуации, в которых следует и не следует использовать целые числа без знака. Мы надеемся, что эта статья оказалась для вас полезной, и, пожалуйста, ознакомьтесь с Linux Hint для получения более информативных статей.

Оцените статью
bestprogrammer.ru
Добавить комментарий