Довольно часто в коде можно увидеть строки типа
char cdigit = '8';
int idigit = cdigit - '0';
Реже, но также встречается
char letter = 'd';
int letter_number = letter - 'a';
Открываем Страуструпа "Язык прогрммирования С++" специальное издание, "Бином-Пресс", 2008. Цитата (стр 110):
Небезопасно считать, ... что символы алфавита непрерывны (в стандарте EBCDIC между i и j имеется разрыв)
У Кернигана и Ритчи вышеприведенный код (по крайней мере по цифрам) встречается регулярно.
Собственно вопрос по цифрам: обязательно ли корректен код idigit = cdigit - '0'?
atoi. Интересно, как там написано. Я нашел только хедеры. – andy.37 Nov 30 '15 at 20:05