【发布时间】:2017-08-13 04:26:46
【问题描述】:
我有以下 C++ 代码:
#include <iostream>
using namespace std;
#include <stdio.h>
int main (int argc , char ** argv)
{
int i1;
int i2;
double d1;
double d2;
printf("i1: %d, i2: %d, d1: %f, d2: %f \n", i1, i2, d1, d2);
}
输出是
i1:4195872,i2:0,d1:0.000000,d2:0.000000
每次我运行程序时,我都会得到相同的输出。现在假设我正在使用以下代码:
#include <iostream>
using namespace std;
#include <stdio.h>
int main (int argc , char ** argv)
{
int i1;
int i2;
double d1;
double d2;
cout << "i1: " << i1;
cout << " i2: " << i2;
cout << " d1: " << d1;
cout << " d2: " << d2;
}
现在我得到以下输出:
i1: 4196144 i2: 0 d1: 6.95294e-310 d2: 0
当我重新运行程序时,d1 的值略有变化,其他值保持不变。
为什么以这种方式初始化值?为什么没有随机初始化或者初始化为零?
【问题讨论】:
-
这是未定义的行为。你不能指望变量有任何价值。
标签: c++ initialization