当我将它放在char数组中时,unsigned char不会出现在printf中

时间:2015-04-27 01:19:19

标签: c string casting

我正在尝试将一个char数组放在一起,将无符号的char变量放到一个函数中,如下所示:

int swap(unsigned char first, unsigned char second){

    printf("First: %u",first);

    char result[4];
    result[0] = first;
    result[1] = '0';
    result[2] = '0';
    result[3] = '\0';
    printf("\nResult: %s", result);

    return 0;
}

在这种情况下,如果我将'2'传递给第一个(第一个打印语句工作正常),但第二个打印语句不会打印出'200'。我首先尝试在赋值语句中首先将(例如)(char)作为char进行转换但无效。

谢谢

1 个答案:

答案 0 :(得分:5)

因为你正在使用int和' 2'在char中不是可见字符。您需要在值中添加48才能获得角色。

result[0] = first + 48;

您需要查看将数字映射到字符的ASCII表: http://www.asciitable.com/index/asciifull.gif

数字的字符表示从48开始,即字符(0)。如果您查看表格,那么您所放置的2的字符不会被定义为打印字符。这就是为什么它没有工作。