C ++,将值插入另一个变量后值发生变化

时间:2018-12-03 19:45:42

标签: c++

我不知道为什么会有这个奇怪的问题。我有一个字符串,可以说包含值'a1a2'

问题是,如果我尝试保存第二个字母(1),则它不起作用,它将向我打印另一个数字。 这是我的代码:

cout << "msg is " << msg[1] << endl; // msg[1] has the value: 1
int cX = (int)(msg[0] - 'a'); // works good
int cY = (int)msg[1]; // I get different value than 1 for some reason ..
int tX = (int)(msg[2] - 'a'); // works good
int tY = msg[3]; // same problem
cout << "\ncY is " << cY << endl; // prints me other number

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

msg[1]不是整数1 。这是字符'1'。当您将其强制转换为整数时,就像在cY行中所做的那样,您将获得其基础表示形式,该表示形式可能是(但不一定是)ASCII码49。如果要将数字转换为整数,您将使用与字母相同的技巧。

int cY = (int)(msg[1] - '0');