首页 > 解决方案 > C++ 中的字符类型(被 C++ 入门解释混淆)

问题描述

书中陈述如下:

与其他整数类型不同,存在三种不同的基本字符类型:char、signed char 和 unsigned char。特别是,char 与signed char 类型不同。虽然有三种字符类型,但只有两种表示形式:有符号和无符号。(plain) char 类型使用这些表示形式之一。其他两个字符表示中的哪一个等效于 char 取决于编译器。

这个描述令人困惑。它说 char 与 signed char 不同,但接着说它使用“两种表示之一:有符号和无符号”。

它还指出只有“2 种表示”,但有 3 种实际类型。这到底是在说什么?

标签: c++char

解决方案


这是试图传达编译器可以自由决定他们采用哪种解释,无论是有符号的还是无符号的,作为程序员,您必须了解它可能不是您所期望的。如果您习惯于对其进行签名,则另一个编译器可能未签名,并且您的代码可能会因为该假设而中断。

因此,如果您需要有符号或无符号,请使用适当的关键字,或者更好的是,使用类似的东西uint8_t来明确您想要什么。

int其他的只有unsigned在指定的情况下。char这里有点松散的大炮。


推荐阅读