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

use*_*172 1 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;
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Dea*_*nie 5

因为你使用的是int而char中的'2'不是可见字符.您需要在值中添加48才能获得该字符.

result[0] = first + 48;
Run Code Online (Sandbox Code Playgroud)

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

数字的字符表示从48开始,即字符(0).如果您查看表格,那么您所放置的2的字符不会被定义为打印字符.这就是它无法正常工作的原因.

  • 使用''0',而不是'48`.它更便携,更清晰. (3认同)