首先,对不起大家,因为我英语不好。我有一个简单的代码:
#include <iostream>
using namespace std;
int main(void) {
char ch = '1';
if (ch == (char)1) {
cout << "Yes";
}
else {
cout << "No";
}
system("pause");
}
奇怪的是控制台打印号。为什么不相等?
ch
包含字符'1'
的字符代码。假设ASCII编码,则此代码的值为49。这不等于1,因此条件为false。
将值1强制转换为char
不会使将其转换为字符编码。
如果条件为true,则需要使用字符常量进行比较。
if (ch == '1') {
这是因为(char(1不是"1",而是代表"标题的开始"。因此,你的产量成为了
(char) 1
将把1从十进制转换为ascii代码1,该代码等于[标题的开头]您可以转换49的"1"ascii代码。