【问题标题】:Local variable initialization behavior C++局部变量初始化行为 C++
【发布时间】:2021-08-02 10:47:30
【问题描述】:

这段代码:

int findsmallerNumber(int low, int high, string *str)
{
    int counter = 0;
    string ss = *str;

    for(int i = low + 1; i <= high; i++)
    {
        if(ss[i] < ss[low])
            counter++;
    }
    cout<<counter<<" ";
    return counter;
}

产生正确的输出为:

4 4 3 1 1 0

但是当计数器变量未初始化时:

int counter;

得到的输出是:

4 8 11 12 13 13

有人可以解释一下这种行为吗?

【问题讨论】:

  • 顺便说一句,当counter0 时,不清楚正确代码的输出如何以4 ... 开头
  • @463035818_is_not_a_number 很抱歉 cout 不应该在那里:(。现在已经编辑了。

标签: c++ c++11 local-variables


【解决方案1】:

有人可以解释一下这种行为吗?

未初始化变量的值是不确定的。如果你读取一个不确定的值,那么程序的行为是不确定的。这解释了您观察到的行为。不要读取不确定的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2016-09-07
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多