参考文档中进行字符类型相等比较,我阅读了以下内容:
- 比较
相同和a
是否相等,其行为与b
,如果 char_type 是 char,static_cast<unsigned char>(a) == static_cast<unsigned char>(b)
否则。a == b
我想知道如果类型是
static_cast
,这些unsigned char
到char
背后的基本原理是什么?
我很难理解如果我们只想比较它们的相等性,为什么我们要关心
char
的符号(无论它是否是当前平台上的 signed
)。
从同一参考页面,答案在“缺陷报告”部分给出(见下文)。
以下改变行为的缺陷报告追溯应用于之前发布的 C++ 标准。
博士 | 适用于 | 发布的行为 | 正确的行为 |
---|---|---|---|
LWG 467 | C++98 | 对于 std::char_traits 和 相同[1] |
更改为内置 和 无符号字符 |
↑ 大多数实现都会调用 std::memcmp() 来提高效率,它将数据解释为无符号字符数组。如果 char 在此类实现上签名,则 std::char_traits