#include <iostream>
#include <string>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
string str = "AB";
reverse(str.begin(), str.end());
int num = 0;
for(int i=0; i<str.length(); i++)
{
cout<<"i="<<i<<", num="<<num<<", "<<(str[i] - 'A' + 1)<<", "<<pow(26, i)<<endl;
// int s = str[i] - 'A' + 1;
// int r = pow(26, i);
// num = num + s * r;
num = num + (str[i] - 'A' + 1) * pow(26, i);
cout<<num<<endl;
}
return 0;
}
VSCode中的结果输出为 num=27,是错误结果,如下图:
Visual Studio中的结果 输出为 num=28, 是正确的, 如下图:
VSCode中 DEBUG下的结果 输出也为 num=28, 也是正确的,其中DEBUG使用的是MinGW中的gdb调试器, 如下图:
可能是因为 VSCode 在调用终端时的命令与其他的不一样,可以试试加一些参数
比如:
-std=c++11 等等
编译器版本问题,reverse应该是c++ 20标准才有的函数吧,不然的话不会这样,你可以试试print一下看看你两次不一样结果的时候reverse之后的str结果就知道了