C: Типизировать вывод atoi () в unsigned char?

Я свел проблему к типо-типизации из вывода atoi (). По сути, я передаю string.c_str () в atoi (), и я могу ‘cout’ значение, как я и ожидал (32). Однако, если я сделаю Typecast, как это:

string num = "32";
unsigned char x = (unsigned char)atoi(num.c_str());
cout << x << endl;

Тогда x в конечном итоге не имеет ЛЮБОГО значения. Это не просто 0 или что-то, но NULL. Что дает?

-2

Решение

char представляет символы символов. Когда вы распечатаете его через поток, вы увидите ASCII-символ. 32 является кодом space символ в коде ASCII, поэтому вы ничего не видите.

3

Другие решения

char Значение представляет символ, поэтому при печати его символа в потоке отображается сам символ, а не его числовой код.

Если числовое значение печатаемого символа представлено печатной буквой ASCII, такой как значение 65, соответствующее букве A, вы увидите букву, отображаемую в выводе консоли / терминала. В вашем примере числовой код 32, что соответствует пробелу, который останется невидимым. Числовой код 0 может привести к некоторому представлению двоичного символа NUL, который будет напечатан вашим терминалом.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector