【发布时间】:2022-01-03 00:07:11
【问题描述】:
首先,对不起大家,因为我的英语不好。我有一个简单的代码:
#include <iostream>
using namespace std;
int main(void) {
char ch = '1';
if (ch == (char)1) {
cout << "Yes";
}
else {
cout << "No";
}
system("pause");
}
奇怪的是控制台打印号。为什么不相等?
【问题讨论】:
-
(char) 1不等于'1'。 -
字符文字
'1'的数值为49。en.cppreference.com/w/cpp/language/ascii -
@RetiredNinja 它的值可能是
49。 ASCII 不是 C++ 中唯一允许的编码 -
因为它们不是。从技术上讲,这是 C++ 实现的运行时字符集的一个特征,但是没有一个广泛使用的字符集将十进制数字字符编码为等于它们所代表的数字值的代码。这对于
'0'来说尤其成问题,其数字编码为 0 会使其成为字符串终止符。 -
另一方面,
'1' - '0'是 1。这就是您将数字字符转换为数字所代表的值的方式。
标签: c++ type-conversion compare converters