Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;变量声明_C++_Variables - Fatal编程技术网

C++ C++;变量声明

C++ C++;变量声明,c++,variables,C++,Variables,我真的不确定这是如何或为什么起作用的: #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 <

我真的不确定这是如何或为什么起作用的:

#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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
int min=int_MAX,min_索引;

coutC++不是一种内存安全的语言。不能保证变量在使用前已被赋值

您看到的
min_index
的打印值是
min_index
内存中的值,它恰好是上次设置内存时留下的


从这样一个初始化变量中读取是“未定义的行为”,因为每次调用该程序都可能导致不同的、意外的结果(取决于最后使用的内存是什么,最终分配给
min\u index
).

因为$min\u索引未初始化为指定值,但已分配给内存位置。如果打印min\u索引而不先初始化,则该内存位置上的值将被解释为min\u索引类型的数据


<> p>因此,建议始终初始化变量,因为您永远不知道内存位置的值是什么。

您不能初始化MIN = IntMax。当C和C++语言中定义了一个变量时,该值是由“垃圾值< /P > < P>显示的”,例如:

int x;
一小块内存分配给变量。但是,我们只声明了变量,没有初始化它,这意味着分配给变量的内存块仍然包含一些以前的程序和操作遗留下来的值。该值称为垃圾值is可能导致程序中的错误结果

要避免这种情况,请像下面这样声明和初始化变量:

int x = 0;

来源:


另请参见:

min\u index
是一个未初始化的变量,包含随机垃圾。访问其值会显示未定义的行为。“似乎有效”是未定义行为的一种可能表现形式。@HGI而不是
@Alexander我会说相反的话。大多数情况下,您不需要刷新缓冲区并支付相关费用。@jaunchopanza鉴于OP还不了解垃圾值,我认为他们不必担心额外的微成本刷新。更重要的是,即使程序在刷新消息之前崩溃,它们的调试打印语句也能正常工作。这是为什么必须使用最高编译器警告的另一个例子!