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

C++ C++;,将值插入另一个变量后,该值会发生变化,c++,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

我不知道为什么我有这个奇怪的问题。我有一个字符串,比如说包含值'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
cout
msg[1]
不是整数
1
。这是字符
'1'
。当您将其键入一个整数时,正如您在
cY
行中所做的那样,您将得到它的底层表示,它很可能(但不一定)是ASCII码49。如果要将数字转换为整数,可以使用与字母相同的技巧

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

什么是
msg
你初始化它了吗?请注意“1”与1不同。请说明msg是如何声明和初始化的。根据我的理解,我不太确定,msg是一个字符数组,如果它输出1,那么它是字符1而不是数字1,要显示1,你可以从中减去“0”。@Blood HaZaRd yup,问题是我向函数发送了一个msg(字符串),这就是为什么第二个字母(2)不是int而是'2'thanksThanks!,这就是问题所在:)@Z.Zadon检查答案,而不是;)