首页 > 解决方案 > 为什么这不打印也不终止?

问题描述

我今天有教练,我们写了这个小代码。它的作用是显而易见的,所以我不会详细解释。在我运行它并输入一些内容后,它不会打印任何内容,也不会终止。如果我将字符切换为整数,它可以正常工作。这段代码有什么问题?

#include<iostream>
#include<string>
using namespace std;

int main()
{
    cout << "wpisz zdanie: ";
    string zdanie;
    getline(cin, zdanie);

    int tab[256];
    for(char i=0; i<=255; i++)
    {
        tab[i] = 0;
    }

    for(int i=0; i<=zdanie.size()-1; i++)
    {
        tab[zdanie[i]]++;
    }

    for(char i=0; i<=255; i++)
    {
        if(i>='0' && i<='Z')
        {
            cout << (char)i << " -> " << tab[i] << endl;
        }
    }

    return 0;
}

标签: c++

解决方案


这里的问题是char数据类型的值从 -128 到 127,所以无论你增加多少,它们永远不会达到 255。它们只会在超过 127 后循环回到 -128。你可以尝试使用unsigned charor int


推荐阅读