输出结果为什么多出48?

问题遇到的现象和发生背景

问题:输出只出现过一次的数

代码
#include
#include
#include

using namespace std;

class Solution {
    public:
        void singleNumber();
    private:
        string nums;
        map <int,int>m;
};
void Solution::singleNumber()
{
    getline(cin,nums);
    for(int i=0;isize();i++)
    {
        if(nums[i]!=' ')
        m[nums[i]]++;
    }
    for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
    {
        if(it->second==1)
        
        cout<first<int main()
{
    Solution N;
    N.singleNumber();
    return 0;
}

输入及运行结果

输入:1 2 2
实际输出:49 目标输出:1
输入:1 1 4 3 3
实际输出:52 目标输出: 4

我的解答思路和尝试过的方法

将输出部分代码改为:

cout<first-48<

进行上述更改后可达到目标结果,但不知道原因
希望能够解释上述情况出现原因

m[nums[i]]++;
没有初始值就++,是有问题的

没有初使化结果不可控。 这种gdb或者vC调试下循环是否有很多次 看下变情况