在c++中进行比较时有些奇怪

something weird when compare in c++

本文关键字:比较 c++      更新时间:2024-05-09
首先,对不起大家,因为我英语不好。我有一个简单的代码:
#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代码。