Почему в C ++ символ char не принимается за цифру?
Поскольку C и C ++ являются разными языками программирования.
См., Например, n3337 , черновой стандарт C ++, практически эквивалентный C ++ 11 стандарт. Для языка программирования C11 см. n1570 и проект CompCert .
Язык программирования * спецификация Обычно написано в какой-то документации. Его семантика имеет такое же значение, как его синтаксис .
Если вы компилируете исходный код C ++ с каким-то недавним вариантом G CC, я предлагаю вызвать как g++ -Wall -Wextra -g
, то есть включить много предупреждений и некоторой отладочной информации.
Рассмотрите также использование некоторых stati c программных инструментов анализа , например Frama- C или Clang stati c анализатор или Coverity et c ....
Читайте также Как отлаживать небольшие программы и около Неопределенное поведение
См. Также этот сайт о C и C ++ и посмотрите RefPerSys (некоторые "интересные "C ++ свободное программное обеспечение * проект 1059 *, в который я активно участвую, AGI ).
Изучите, по крайней мере для вдохновения, исходный код существующего C ++ open источник проектов. Qt или fi sh shell сразу приходит на ум (но тысячи других существуют на github или на gitlab или где-либо еще, например, Гуди , PPL , Инструментарий Fox , FLTK ). Вы многому научитесь, активно участвуя в одном из них (возможно, даже RefPerSys )
Кстати, я настоятельно рекомендую явно инициализировать каждую переменную Numberri c в C или в C ++ (так код unsigned char repeat=0, i=0;
в вашем случае). Любой достаточно хороший оптимизирующий компилятор будет удалять их, когда они бесполезны, и отлаживать вашу программу (например, с помощью gdb
, особенно в системах GNU / Linux например, Ubuntu или Debian ) будет проще, когда его поведение станет более детерминированным c.