[英]C++ Variable declaration
我不确定如何或为什么这样工作:
#include <stdio.h>
#include<stdlib.h>
#include <limits.h>
#include <iostream>
using namespace std;
int main() {
int min = INT_MAX, min_index;
cout << min <<"\n";
cout << INT_MAX << "\n";
cout << min_index <<"\n";
system("pause");
return 0;
}
有min
, INT_MAX
和min_index
实际输出,我知道INT_MAX
是limits.h
一部分,因此min
和INT_MAX
相同,但是min_index没有给出值,为什么它显示值。
C ++不是内存安全语言。 不能保证在使用变量之前已为其分配了值。
您所看到的min_index
的打印值是min_index
内存中的min_index
,恰好是从上一次设置内存的时间起剩下的值。
从这样的初始化变量读取数据是“未定义的行为”,因为对该程序的每次调用都可能导致不同的意外结果(取决于最后使用最终分配给min_index
的内存所使用的min_index
)。
在像C和C ++这样的语言中,定义变量时,例如:
int x;
一小段内存分配给该变量。 但是,我们仅声明了变量,而未对其进行初始化,这意味着已分配给该变量的内存块仍包含一些先前程序和操作所剩余的值。 该值称为垃圾值 。 这可能会导致程序产生错误结果。
为了避免这种情况,请声明和初始化变量,如下所示:
int x = 0;
资料来源: 您所说的变量中的垃圾值是什么意思?
另请参阅: 未初始化的变量如何获得垃圾值?
因为$ min_index没有初始化为指定的值,而是将其分配给内存位置。 如果您在未先初始化min_index的情况下对其进行打印,则该存储位置上的值将被解释为min_index类型的数据。
因此,始终建议初始化变量,因为您将永远不知道该内存位置的值。
您无法初始化min = int_max。 该值由于垃圾值而显示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.