c++ - 为什么这不打印也不终止?
问题描述
我今天有教练,我们写了这个小代码。它的作用是显而易见的,所以我不会详细解释。在我运行它并输入一些内容后,它不会打印任何内容,也不会终止。如果我将字符切换为整数,它可以正常工作。这段代码有什么问题?
#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;
}
解决方案
这里的问题是char
数据类型的值从 -128 到 127,所以无论你增加多少,它们永远不会达到 255。它们只会在超过 127 后循环回到 -128。你可以尝试使用unsigned char
or int
。
推荐阅读
- f# - 如何将 C# XAML 中的 F# 模块用于 DataTemplates 和 DataContext?
- javascript - 如何在保持顺序的同时异步处理 Node.js 中的流事件?
- javascript - 如何在 Typescript 中将“this”明确定义为“any”?
- javascript - Firestore 查询文档的字段 ID
- jquery - jQuery Promise 函数链接
- python - 运行代码时输出面板中没有输出 - VSCode 上的 Python
- java - 从使用 Retrofit 2 for java Android 的方法返回字符串
- firebase - 从非谷歌服务器访问firestore?(我只是上传服务帐户 json 吗?)
- json - 如何在scrapy中从json中删除转义字符?
- c++ - 使用来自 contrib 库的 OpenCv c++ tracking api