我有一个无符号字符,需要在 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/