-5
#include<iostream>
#include<string>
#include<sstream>

using namespace std;

int main(){
    stringstream ss;
    ss << 32;
    string str = ss.str();
    cout << str << endl
         << str[0] << endl
         << str[1] <<endl
         << str[0]%10;
    return 0;
}

输出是:

32
3
2
1

相反,最后一行应该是 3,因为 3%10=3。

4

2 回答 2

5

因为您将它与 ascii 值进行比较,即 51(0 是 48),所以修改为您 1。您应该减去“0”或 48 以便从汽车中获得实数。

于 2016-05-26T06:53:20.017 回答
3

字符的表示不同于数字的表示。即使 at 的字符str[0]是 3,它的 ASCII 码(即它的数字表示)是 51 的字符 3。由于在执行需要整数的操作时,字符可以隐式转换为整数,因此您的代码执行51%10的是 1。

于 2016-05-26T06:58:23.723 回答