cmp_less сравнивает знаковое и беззнаковое целое без опасного приведения. Обычный оператор < в такой паре может превратить отрицательное в большое.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpNmCm 323 of 696 menu
◀ ▶

Сравнение знаков в C++

Функция cmp_less сравнивает знаковое и беззнаковое целое без опасного приведения.

Обычный оператор < в такой паре может превратить отрицательное в большое положительное. Шаблон из <utility> сравнивает два значения как величины с учетом знака и не превращает знаковое в беззнаковое заранее. Запишем int -1 и unsigned 1 и выведем результат:

#include <utility> #include <iostream> int signed_val = -1; unsigned unsigned_val = 1; std::cout << std::cmp_less(signed_val, unsigned_val) << "\n";

Рядом выведем тот же ответ и результат прямого < для сравнения:

#include <utility> #include <iostream> int a = -1; unsigned b = 1; std::cout << std::cmp_less(a, b) << "\n"; std::cout << (a < b) << "\n";

Задайте int x = -5 и unsigned int y = 3. Выведите 1, если std::cmp_less(x, y) истинно, иначе 0.

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