![](/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.