является на самом деле закодированным числом 48 в ASCII. Как это объясняет, что нужно вычитать именно символ нуль, а не число нуль. Зачем именно символ?
потому что в кодировки символам '0', '1', ... , '9' соответствуют подряд идущие числовые соответствия, в результате чего '5' - '0' как правило тождественно 5 - 0, хотя первое и будет раскрываться как 53 - 48(опять же условно).
ОКЕЙ. Вот я вычитаю из пяти нуль: '5'-'0', что, если раскодировать, переводится в это: 0x35-0x30=0x5 Почему в результате это будет число пять, а не Dec | Hex | Binary | HTML | Char | Description 5 | 05 | 00000101 |  | ENQ | Enquiry
А это уже как интерпретировать надо
ты предсталяешь во что превращается твоя таблица?
Читабельно, тащемта.
Тебе что надо то?
Только теоретически разобраться, как оно работает.
Потому что символы - это интерпретация, а не объект, другими словами символов даже и не существует, а существуют только цифры и даже когда ты пишешь '0' компилятор за тебя внутри заменит это на байт со значением 0x30, т.е. работая с "символами" ты работаешь с числами, к которым применима вся числовая арифметика как если бы ты просто работал с 8-ми битными числами.
вот эти размышления даже более истины
То есть если я где-то в коде напишу 7 или 0x7 или BELL, то эффект будет один и тот же?
в остальном да, '\a', 0x7, 7 это одно и то же и различие видно лишь человеку, более того как уже сказал все различия сотрутся уже на уровне компиляции
кстати ты просто запусти printf("%d %d %d" , '\a', 0x7, 7);
Обсуждают сегодня