Вот как ты это делаешь.Вы, вероятно, хотите, чтобы он был без знака.
Может быть, ваш printf
не так?
Ниже приведен пример его работы:
// Print a to z.
int i;
for (i = 97; i <= 122; i++) {
unsigned char x = i;
printf("%c", x);
}
Это печатает abcdefghijklmnopqrstuvwxyz
как и ожидалось.(См. На ideone )
Обратите внимание, вы также можете printf("%c", i);
напрямую;char
- это просто целочисленный тип меньшего размера.
Если вы пытаетесь сделать printf("%s", x);
, обратите внимание, что это неверно.%s
означает печать как строку, однако символ не является строкой.
Если вы сделаете это, он будет обрабатывать значение x
как адрес памяти и начнет читать строку оттуда до тех пор, покапоражает \0
.Если это просто привело к печати s
, вам повезло.При этом вы, скорее всего, в конечном итоге получите ошибку сегментации, поскольку получите доступ к некоторой памяти, которая, скорее всего, не ваша.(И почти наверняка не то, что вы хотите.)