簡體   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