繁体   English   中英

C ++中未初始化变量的默认值是什么?

[英]What is the default value for not initialized variables in C++?

在下面,您会看到一个非常非常简单的程序:

#include <stdlib.h>
#include <iostream>

using namespace std;

int main()
{
    int r;
    int c;
    int d;

    cout<<"r="<<r<<endl<<"c="<<c<<endl<<"d="<<d;
    return 0;
}

问题是,为什么在输出中c的值不同于rd的值?

在此处输入图片说明

当我在屏幕上打印时更改它们的顺序时,值会改变!

#include <stdlib.h>
#include <iostream>

using namespace std;

int main()
{
    int r;
    int c;
    int d;

    cout<<"c="<<c<<endl<<"r="<<r<<endl<<"d="<<d;    

    return 0;
}

在此处输入图片说明

为什么这次r的值与其他值不同? 我只是改变了在屏幕上打印它们的顺序!

C ++中未初始化变量的默认值是多少

对于基本类型的局部变量,默认值是不确定的。

问题是,为什么在输出中c的值不同于r和d的值?

因为读取未初始化的变量具有未定义的行为。

当我更改cout行中变量的顺序时,值会改变!

如果对此感到惊讶,那么您还不了解未定义行为或未指定值的含义。

未初始化值的值可以是任何值,并且对代码的任何更改,编译器的更改,处理器的更改,甚至月亮的高度*都可能更改垃圾。 否则可能不会。 在这种情况下,它做到了。

*在大多数C ++编译器中不太可能是一项功能

在函数中声明的未初始化变量的值是不确定的。

全局变量将设置为0(如果不是数字则为等效变量)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM