|
49
|
| Johannes Schaub - litb · 技术社区 · 17 年前 |
|
|
1
23
可能我误解了这个问题,但是从未签名的字符到字符的转换不是未指定的,它是依赖于实现的(在C++标准中是4.7到3)。 C++中1字节字符的类型是“char”,而不是“unChar char”。这给了实现在平台上做最好事情的更多自由(例如,标准主体可能认为存在有符号字节算术比无符号字节算术更快的CPU,尽管这是我的猜测)。此外,对于C的兼容性,从C++中删除这种存在性不确定性的结果是C; 考虑到“char”类型存在,我认为通常的流使用它是有意义的,即使它的签名没有定义。也许你的问题得到了答案,“为什么C++没有定义char是无符号的?” |
|
|
2
15
我一直是这样理解的:目的
实现编写器可以选择一个八位字节编码,例如
ISO-8859-1
甚至是双八位字节编码,例如
UCS-2
. 没关系。只要一个
令人困惑的是
和
两者之间的一个相似之处
要回答您的问题,STL使用的原因
|
|
|
3
4
char代表字符,unsigned char代表原始数据字节,signed char代表有符号数据。 标准没有指定有符号字符还是无符号字符将用于char的实现-它是编译器特有的。它只指定“char”足以在您的系统中保存字符,就像那些日子的字符一样,也就是说,不使用unicode。 对字符使用“char”是标准的方法。使用无符号char是一种黑客行为,尽管它将匹配编译器在大多数平台上对char的实现。 |
|
|
4
0
我想 this 评论解释得很好。引述:
|