#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string codigo = "12345678917";
int remainder = 7;
if (remainder == codigo[10]) {
cout<<"equal" << endl;
}
return 0;
}
这只是一个简单的比较。此代码不打印&;equals &;
我将int类型更改为char或string,但它不起作用。我尝试了比较方法,还是一无所获。我遗漏了什么吗?
当我把余数改为'7'时,它确实工作了。但我不知道为什么比较变量不起作用
在你的代码中,你正在比较int型和char型,在这种情况下,将会有一个从char型到int型的隐式转换。
使用
cout << "int value: " << (int)codigo[10] << endl;
可以看到该字符的int值为55,因为7不等于55,所以条件不为真。如果你只是将类型更改为char,它也将不起作用,因为这会将7转换为不是字符'7'的字符。
在7周围使用单引号会导致该值是字符字面量,因为它存储在int类型中,其值将为55。因为这等于codigo[10]的字符值,所以条件为真。