为啥在递增 int 时会得到随机结果 [关闭]

Posted

技术标签:

【中文标题】为啥在递增 int 时会得到随机结果 [关闭]【英文标题】:why am I getting random results when incrementing an int [closed]为什么在递增 int 时会得到随机结果 [关闭] 【发布时间】:2014-08-11 02:29:11 【问题描述】:

我必须编写一个函数来遍历一个字符串,找到所有存在的大写字母并将它们变成小写。我决定添加一些代码来显示找到了哪些字母以及找到了多少。尽管在每次编译时,'cnt' 的值都会产生荒谬的结果。

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

int upper(string s) 
    int cnt;

    vector<char> v;
    for (auto& i : s)     
        if (isupper(i)) 
            v.push_back(i);
            i = tolower(i);
            ++cnt;
        
    
    cout << "new string is '" << s << "'\n"
         << "number of capitals found is " << cnt << "\n"
         << "letters found were ";
    for (auto l : v)
        cout << l << " ";
    return 0;


int main() 
    string l = "This IS a TeSt";
    upper(l);

我确定我一定是在循环中做错了什么,但无论问题是什么,我都找不到。

【问题讨论】:

垃圾进垃圾出。你没有初始化cnt。 【参考方案1】:

变量cnt使用时从不初始化,改

int cnt;

int cnt = 0;

【讨论】:

不敢相信我错过了。到目前为止,我从来没有这样做过。 @user3806887:未能初始化变量可能看起来有效,直到它没有。这是非常危险的;你应该仔细检查你过去的代码。【参考方案2】:

您未能初始化局部变量cnt。使用未初始化的值会引发未定义的行为,基本上任何事情都可能发生。

使用int cnt=0; 并打开所有编译器警告。

【讨论】:

以上是关于为啥在递增 int 时会得到随机结果 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 GridSearchCV 中使用 StandardScaler 时会得到不同的结果?

为啥使用相同的 Keras 模型和输入进行预测时会得到不同的结果?

为啥从不同的文件位置调用时会得到不同的结果?

为啥在 WPF 中将 BitmapSource 保存为 bmp、jpeg 和 png 时会得到完全不同的结果

为啥字符串连接在 C++ 中得到奇怪的结果? [关闭]

VB中随即函数为啥每次的得数都是一样的