Другие языки программирования и технологии
Конструкция вида ++ndigit[c - '0' ] для C - это норма?
Изучаю язык Си. Встретил конструкцию вида ++ndigit[c - '0' ] в учебнике. Я так понимаю - это приведение переменной к типу int. Вопрос: неужели нет "нормального" typecast в Си? По моему мнению значение конструкции неочевидно. Аналог из PHP - ++ndigit[(int)$c ] намного нативнее. Аналоги в Си имеются?
c - '0' по сути переводит символ-цифру в соответствующее число, определяемое этой цифрой.
Чувствуете кривизну формулировки?
Вот именно поэтому перевода символа-цифры в число, определяемое этой цифрой, нет.
А вот строчку перевести в число можно.
Чувствуете кривизну формулировки?
Вот именно поэтому перевода символа-цифры в число, определяемое этой цифрой, нет.
А вот строчку перевести в число можно.
ИМХО это char c, там должна быть цифра, по замыслу, а коды идут так: '0','1','2',...'9' : (int)('0')=48, (int)('1')=49,...Вфражение c-'0' это перевод цифрового символа в int, те. '0'->0, '1'->1 итд.
Не знаю где ты тут приведение типов увидел, но это инкремент элемента массива ndigit с индексом c - '0'. А тайпкаст в С выглядит также как в пыхе. Вернее в пыхе он выглядит как С.
Ну и да, такой код пишут либо упоротые индусы, либо чтоб показать "гляньте какую херню можно сделать в С".
Ну и да, такой код пишут либо упоротые индусы, либо чтоб показать "гляньте какую херню можно сделать в С".
Символ '0' при приведении к целому числу дает 48, а символ '9' дает 57. Человек вводит символ '9', он преобразовывается в 57. Из числа вычитается 48, получается 9(уже не символ) . На этом принципе можно построить аналог ф-ии atoi().
Всегда ваш К. О.
з. ы. что такое typecast? по-русски, пжалста.
Всегда ваш К. О.
з. ы. что такое typecast? по-русски, пжалста.
... не слышал.. . на перевод типов не похоже.. . на элимент массива.. . если это преобразователь типов то он изначально неправельный, такой хренью не может описоваться высокоуровневая функция, следовательно, это может выводить № символа, символ 0-ля 48 => в коце должно быть -48.
Похожие вопросы
- Калибровка монитора RGB. Должны ли отличаться зрительно в Corel DRAW между собой цвета R-0 G-0 B-0 и C-0 M-0 Y-0 K-100?
- Учусь програмировать на C++ по книге "C++ для чайников".Проблема.
- Почему многие отдают предпочтение C++ а не C# ?
- Зачем нужен C++, если есть C?
- Делаю нейронную сеть на C++. Как в C++ работать с микрофоном?
- Pasal! Как найти точку пересечения двух прямых? ax+by+c=0
- Как будет выглядеть программа решения квадратного уравнения ax^2 + bx + c = 0 (Паскаль)???
- Объясните, что такое return 0 в C++
- Помогите построить график функции y=sinx, xЄ[-1;1] с шагом изменения аргумента h =0,1 C++ VisualStudio
- А вы замечали что-то общее между C++ и C#? Нет?! Смотри C++ = 2 плюса C# = 4 плюса