<
Оператор < сравнивает два объекта String лексикографически и возвращает true, если левая строка идёт раньше правой — как в словаре, по кодам символов.
Полная статья
Описание
Оператор < выполняет лексикографическое сравнение двух объектов String: он сопоставляет символы строк слева направо по их числовым кодам и возвращает true, если левая строка «меньше» правой.
Лексикографический порядок — это тот же принцип, по которому слова расставляют в словаре: сначала сравниваются первые символы, и если они совпадают, сравнение переходит к следующим. Например, "apple" меньше "banana", потому что 'a' идёт раньше 'b' в таблице символов.
Синтаксис
myString1 < myString2
Параметры
myString1: объектString, стоящий слева от оператора — тот, который проверяется на «меньшесть».myString2: объектString, стоящий справа — эталон для сравнения.
Возвращает
true, если myString1 лексикографически меньше myString2, иначе false.
Где применяется
- Сортировка строк — если нужно упорядочить массив объектов
Stringпо алфавиту, оператор<помогает определить, какой элемент должен стоять раньше. - Валидация ввода — проверка, что введённая пользователем строка не выходит за допустимый диапазон значений.
- Меню и команды — сравнение команд, поступающих через Serial, чтобы выбрать нужную ветку обработки.
Практические замечания
- Регистр имеет значение. Заглавные буквы имеют меньший числовой код, чем строчные:
'A'(65) <'a'(97). Это значит, что"Zebra"будет «меньше», чем"apple", хотя интуитивно кажется наоборот. Если нужно сравнение без учёта регистра, приведите обе строки к одному регистру перед сравнением. - Сравниваются коды символов, а не смысл слов. Порядок определяется таблицей ASCII, поэтому результат для строк на кириллице или с диакритикой может не совпадать с ожидаемой алфавитной сортировкой.
- Пустая строка всегда меньше непустой.
""<"a"вернётtrue, что логично: у пустой строки нет символов для сравнения. - Оператор не изменяет строки — он только читает их содержимое и возвращает булево значение.
- Результат
falseне означает равенство. ЕслиmyString1 < myString2вернулfalse, строки могут быть равны илиmyString1может быть больше. Для проверки равенства используйте оператор==.