Здраствуйте, мне нужно было преобразовать int в char нашел сабж пример тут, а вот почему он работает понять не могу, если убрать нуль в конце, то работает не коректно, прокоментируйте пожалуйста этот пример,
заранее спасибо
Здравствуйте, Аноним, Вы писали:
А>Здраствуйте, мне нужно было преобразовать int в char нашел сабж пример тут, а вот почему он работает понять не могу, если убрать нуль в конце, то работает не коректно, прокоментируйте пожалуйста этот пример,
'что-нибудь' в C/C++ можно считать просто целочисленной константой. Как будто бы символ «'» не имел в языке особого значения и было написано так:
. . .
char const ' ' = 32;
char const '!' = 33;
char const '"' = 34;
char const '#' = 35;
. . .
char const '0' = 48;
char const '1' = 49;
char const '2' = 50;
char const '3' = 51;
char const '4' = 52;
char const '5' = 53;
char const '6' = 54;
char const '7' = 55;
char const '8' = 56;
char const '9' = 57;
. . .
char const 'A' = 65;
char const 'B' = 66;
. . .
(в ASCII так, на экзотических платформах коды могут быть другими)
Тип char не имеет никаких «магических» свойств, это просто целочисленный тип. Другое дело, что средства ввода/вывода обычно выводят значения типа char не как число, а как символ, соответствующий ему.
Вот и получается, что '0' + 5 = 48 + 5 = 53 = '5'.
Здравствуйте, <Аноним>, Вы писали:
А>Здраствуйте, мне нужно было преобразовать int в char нашел сабж пример тут, а вот почему он работает понять не могу, если убрать нуль в конце, то работает не коректно, прокоментируйте пожалуйста этот пример,
Тебе, наверное, из числа 5 нужно получить символ '5'?
Символы — тоже числа.
(char)5 — это, кажется, ETX или какой-то ещё управляющий символ. Поэтому такой фокус и не проходит.
А поскольку цифры идут подряд, '0', '1', ..., '9', то получается, что
'0' = '0'+0
'1' = '0'+1
...
'9' = '0'+9
... << RSDN@Home 1.2.0 alpha rev. 655>>