![](/img/trans.png)
[英]Visual C++ 2005 - are local int and double variables initialized to 0 by default or not?
[英]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
的值不同於r
和d
的值?
當我在屏幕上打印時更改它們的順序時,值會改變!
#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.