无符号字符打印它的 ascii 值
Unsigned character prints it's ascii value
我有一个 C++ 程序,它从二进制文件 逐字节读取 然后将它作为一个字符输出到控制台。
使用 unsigned char
作为类型后,控制台会打印它的 ascii 值,这是我没有想到的。
如何让它打印字符而不是它的 ascii 值?
可重现代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
unsigned char a;
a = 'A';
cout << (a > 31 ? a : '.');
}
最新的问题是由条件表达式中的类型混合引起的。
unsigned char a;
...
cout << (a > 31 ? a : '.');
此表达式的类型为 int,因为这两种 char 类型都不足以包含另一种类型的所有值。 (如果前面的陈述不完全准确,我深表歉意,我懒得去阅读细则。)
只需转换一个字符,以便条件表达式的两种结果类型相同,例如a > 31 ? a : (unsigned char)'.'
.
你不能像使用 cout << (a > 31 ? a : '.') 一样将它转换为 char; 你可以打印 cout << (char)(a > 31 ? a : '.'); .
我有一个 C++ 程序,它从二进制文件 逐字节读取 然后将它作为一个字符输出到控制台。
使用 unsigned char
作为类型后,控制台会打印它的 ascii 值,这是我没有想到的。
如何让它打印字符而不是它的 ascii 值?
可重现代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
unsigned char a;
a = 'A';
cout << (a > 31 ? a : '.');
}
最新的问题是由条件表达式中的类型混合引起的。
unsigned char a;
...
cout << (a > 31 ? a : '.');
此表达式的类型为 int,因为这两种 char 类型都不足以包含另一种类型的所有值。 (如果前面的陈述不完全准确,我深表歉意,我懒得去阅读细则。)
只需转换一个字符,以便条件表达式的两种结果类型相同,例如a > 31 ? a : (unsigned char)'.'
.
你不能像使用 cout << (a > 31 ? a : '.') 一样将它转换为 char; 你可以打印 cout << (char)(a > 31 ? a : '.'); .