C/C++ 转换问题,unsigned char 到 char

标签 c type-conversion printf

我有一个无符号字符,需要在 printf 之前将其转换为字符。所以示例代码如下所示:

   unsigned char y = sample.result;  
   char x = (char)y;  
   printf("%c \n", x);  

但是,printf不会打印x,但如果我使用cout,x会正确打印。我不知道为什么会这样。如何将 unsigned char 变量转换为 char?我做错了吗? reinterpret_casting 仅适用于指针,而我的不是指针。提前致谢。

编辑:命令提示符为我返回一个笑脸“☺”作为sample.result的值,它对应于unsigned char 1。显然netbeans无法打印这个笑脸。我不知道它是如何转化为笑脸的。有什么帮助吗?

编辑 2:我刚刚意识到你无法打印 char x = 1;在 netbeans 中,并在命令提示符中打印它会产生笑脸。原因? :(

最佳答案

如果 char x = 1 并且您希望打印出 1,则需要使用 %d 而不是 %c你的格式说明符。 %c 打印 ASCII representation数字的,对于 1 来说是一个不可打印的字符,称为“标题开始”。

关于C/C++ 转换问题,unsigned char 到 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113510/

相关文章:

matlab - 如何在matlab中使用fprintf简短地编写多个变量?

c - fprintf 变量或字符串

c - C语言如何对URL进行编码?

C 程序在给字符串赋值后崩溃

c - 如何更改索引为空的数组值的索引

c++ - 如何通过 std::unique_ptr 成员调用其他类的 const 成员函数

c++ - 无法在 pthread 中从类型 void* (类名)(void*) 转换为类型 void* (*)(void*)

python - 将 C 结构传递给 C DLL 中的函数

c# - 0 到枚举的隐式转换

c - 我用这个 printf() 会丢失信息吗?