C++ 为什么需要将int变量初始化为0?

C++ 为什么需要将int变量初始化为0?,c++,C++,我刚做了一个程序,要求输入5到10之间的数字,然后它计算这里输入的数字的总和就是代码 #include <iostream> #include <cstdlib> using namespace std; int main() { int a,i,c; cout << "Enter the number between 5 and 10" << endl; cin >> a; if (a < 5

我刚做了一个程序,要求输入5到10之间的数字,然后它计算这里输入的数字的总和就是代码

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int a,i,c;
    cout << "Enter the number between 5 and 10" << endl;
    cin >> a;
    if (a < 5 || a > 10)
    {
        cout << "Wrong number" << endl;
        system("PAUSE");
        return 0;
    }
    for(i=1; i<=a; i++)
    {
        c=c+i;
    }
    cout << "The sum of the first " << a << " numbers are " << c << endl;
    system("PAUSE");
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int a,i,c;
库塔;
如果(a<5 | a>10)
{

CUT< P>因为C++没有自动为你设置它,所以你应该自己初始化:

int c = 0;
未初始化的变量有一个随机数,如
2293687
-21
99999
,…(如果读取时未调用未定义的行为)


另外,
静态
变量将被设置为其默认值。在这种情况下,
0
如果您没有将
c
设置为
0
,它可以接受任何值(技术上,是一个不确定的值)。如果您这样做

c=c+i

然后将
i
的值添加到可能是任何东西的东西上。从技术上讲,这是未定义的行为。实际情况是,您无法依赖该计算的结果

<>在C++中,非静态或全局内置类型在“默认初始化”时没有初始化,为了零初始化<代码> int <代码>,需要显式:

int i = 0;
也可以使用值初始化:

前5个数字的总和是2293687

这是因为如果不初始化
c
,您将获得以前存储在该位置的值(垃圾值)。这将使您的程序行为未定义。在程序中使用它之前,您必须初始化
c

int c= 0;
因为当你这样做的时候:

int a,i,c;
因此,实例化和初始化
c
,您并没有说您希望它初始化为什么。这里的规则有些复杂,但归结起来有两件事:

  • 对于整数类型,如果不指定初始值设定项,则变量的值是不确定的
  • 当您尝试读取未初始化的变量时,会引发未定义的行为

  • 根据定义,非静态变量是未初始化的-它们的初始值是未定义的

    在另一个编译器上,每次都可能得到正确答案、错误答案或不同答案


    C/C++不做额外的工作(初始化为零至少需要一两条指令)你没有要求他们这样做。

    如果c像你写的那样声明和初始化,它会在堆栈区域吗?@tomer.z:这取决于你在哪里写它。例如,在全局区域或函数声明中…最后一行也可以缩减为
    int j()局部变量的;
    。@unknown6656这将是一个函数声明。是的,不必担心。但是,“int j(0);”应该是合法的,不是吗?
    int a,i,c;