下面,您会看到一个非常简单的程序:
#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
的价值与其他人不同?我只是改变了在屏幕上打印它们的顺序!
答案 0 :(得分:5)
C ++中未初始化变量的默认值是什么
对于基本类型的局部变量,默认值是不确定的。
问题是,为什么在输出中c的值与r和d的值不同?
因为读取未初始化的变量具有未定义的行为。
当我改变cout行中变量的顺序时,值会改变!
如果您对此感到惊讶,那么您还没有理解未定义的行为或未指定的值意味着什么。
未初始化值的值可以是任何值,对代码的任何更改,编译器的更改,处理器的更改甚至月亮的高度*都可能会改变垃圾。或者它可能不会。在这种情况下,确实如此。
*在大多数c ++编译器中不太可能是一个功能
答案 1 :(得分:1)
函数中声明的未初始化变量的值未定义。
全局变量将设置为0(如果不是数字,则等效)。