c++ - C++ 中的字符类型(被 C++ 入门解释混淆)
问题描述
书中陈述如下:
与其他整数类型不同,存在三种不同的基本字符类型:char、signed char 和 unsigned char。特别是,char 与signed char 类型不同。虽然有三种字符类型,但只有两种表示形式:有符号和无符号。(plain) char 类型使用这些表示形式之一。其他两个字符表示中的哪一个等效于 char 取决于编译器。
这个描述令人困惑。它说 char 与 signed char 不同,但接着说它使用“两种表示之一:有符号和无符号”。
它还指出只有“2 种表示”,但有 3 种实际类型。这到底是在说什么?
解决方案
这是试图传达编译器可以自由决定他们采用哪种解释,无论是有符号的还是无符号的,作为程序员,您必须了解它可能不是您所期望的。如果您习惯于对其进行签名,则另一个编译器可能未签名,并且您的代码可能会因为该假设而中断。
因此,如果您需要有符号或无符号,请使用适当的关键字,或者更好的是,使用类似的东西uint8_t
来明确您想要什么。
int
其他的只有unsigned
在指定的情况下。char
这里有点松散的大炮。
推荐阅读
- firebase - Firebase数据库安全规则,检查resource.data中的auth.email
- python - 在 Python 中获取单个字符作为输入,而无需按 Enter(类似于 C++ 中的 getch)
- php - 在 php mysql 中更新数据的问题
- tuples - Pyomo 中元组集的表示
- centos8 - centos 8上的百胜命令ModuleNotFoundError
- python - 使用 Python Windows 获取 CPU 和 GPU 温度
- visual-studio-code - 如何在带有 HashiCorp Terraform 插件的 VSCode 上使用 tflint?
- amazon-web-services - 如何让我的 CodePipeline 管道使用 GitHub 作为源来更新我的资源?
- flask - 在A上运行flask时如何实现“B ping C”?
- javascript - 如何在不影响父节点的情况下对叶节点进行更改