为何该C++表达式求值结果为False?以‘A’ > ‘B’为例
为什么表达式
'A' > 'B' 在C++中求值为False? 你完全找对方向了!在C++里,当你对字符做比较运算时,实际上是在比较它们对应的ASCII码数值——这也是你提到的关键点。
正如你所说,ASCII表中大写'A'的十进制值是65,'B'是66。把字符替换成对应的数值后,表达式就变成了 65 > 66,这个数值比较的结果显然是False,所以原表达式'A' > 'B'的求值结果自然就是False了。
额外提一句:虽然C++标准没有强制要求必须使用ASCII编码,但现在绝大多数编译器和操作系统都采用ASCII(或者兼容ASCII的UTF-8编码),所以这个比较行为在实际开发中是普遍一致的。只有在一些非常特殊的老旧系统(比如使用EBCDIC编码的大型机)上可能会有不同结果,但这种情况现在几乎碰不到了。
内容的提问来源于stack exchange,提问作者user17715
相关产品推荐
相关产品推荐

