Проверить что символ число
Как корректно проверить является ли символ числом или точкой?
Есть такая функция:
А как проверить является ли символ точкой или нет?
3 ответа 3
Эта проверка корректна, стандарты С и С++ гарантирует это (см. ответ @wololo).
может быть такая ситуация что char содержащий код символа 1 будет не равен ‘1’. Или такого не может быть?
А как проверить является ли символ точкой или нет?
Элемент множества исходных символов (а значит и символы 0 — 9 ), заключённый в одинарные кавычки без префикса является обычным символьным литералом ([lex.ccon]):
Из приведённой выше цитаты следует, что литералы вида ‘0’ — ‘9’ имеют тип char и значение эквивалентное числовому значению, кодирующему эти символы в множестве символов выполнения.
Конкретные числовые значения, которыми кодируются те или иные символы в множестве символов выполнения определяются реализацией. Однако, несколько специальных гарантий всё же есть:
The basic execution character set and the basic execution wide-character set shall each contain all the members of the basic source character set, plus control characters representing alert, backspace, and carriage return, plus a null character (respectively, null wide character), whose value is 0. For each basic execution character set, the values of the members shall be non-negative and distinct from one another. In both the source and execution basic character sets, the value of each character after 0 in the above list* of decimal digits shall be one greater than the value of the previous. The execution character set and the execution wide-character set are implementation-defined supersets of the basic execution character set and the basic execution wide-character set, respectively. The values of the members of the execution character sets and the sets of additional members are locale-specific.
Таким образом, проверка переменной i типа char на хранение арабской цифры с помощью кода