初始化变量时的结果不同

时间:2014-09-13 20:35:14

标签: c++

#include <iostream>

using namespace std;

int main()
{
    int i = 0;
    int a = 0; 
    char letters[10] = {'a','B','c','D','e','F','g','H','i','J',};
    char c;
    while(letters[i])
        {
            c=letters[i];
            if(isupper(c))
                {
                    a+=1;
                }
            i++;
        }
    cout<<a;
    return 0;
}

只是一个简单的程序来计算数组中大写字母的数量

  • 当我设置int;我得到了4
  • 当我设置int a = 0;我得到了6

我不知道为什么,请你好,因为我知道它可能是一些非常愚蠢的我看不到

1 个答案:

答案 0 :(得分:2)

您必须初始化变量。修改已声明但从未初始化的变量是未定义的行为。该标准没有指定变量必须默认初始化,因为它们是声明的。

int a;      // Value unknown / unspecified at runtime

int a = 0;  // Value is known to be 0

此外,如果此循环超过已分配数组的末尾,则此循环会产生未定义的行为。

while(letters[i])
{
     ...
     i++;
}