int theDigit = 1;
char ch = theDigit+'0';
Это работает, потому что 1 гарантирует, что последовательность символов '0'
... '9'
является непрерывной, поэтому, если вы добавите свой номер к '0', вы получите соответствующий символ. Очевидно, что это работает только для однозначных чисел (если theDigit
равно, например, 20, вы получите несвязанный символ), если вам нужно преобразовать в строку целое число, вам понадобится snprintf
(в C) или строковые потоки (на C ++).
<ч />
- C ++ 11, [lex.charset] ¶3:
В исходных и исполнительных базовых наборах символов значение каждого символа после 0 в приведенном выше списке десятичных цифр должно быть на единицу больше, чем значение предыдущего.
Кстати, я полагаю, что они не предписывали смежность и в алфавитных символах только из-за EBCDIC.