C 变量声明
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
的内存)。
在C和C 等语言中,当您定义变量时,例如:
int x;
将一小部分内存分配给了变量。但是,我们仅声明了变量,而不是初始化的变量,这意味着已分配给该变量的内存块仍然包含以前程序和操作中剩下的一些值。该值称为垃圾值。这可能会导致程序中的错误结果。
为了避免这种情况,请声明并初始化这样的变量:
int x = 0;
来源:变量中的垃圾值是什么意思?
另请参阅:非initiliazed变量如何获得垃圾值?
,因为$ min_index未初始化为指定值,而是将其分配给内存位置。如果您在不先初始化的情况下打印min_index,则该内存位置上的值将被解释为min_index类型的数据。
因此,始终建议初始化变量,因为您永远不会知道,该内存位置的值是什么。
您不能初始化min = int_max。该值是由于垃圾值
相关文章:
- 在疯狂的部分中声明变量
- 如何在C++中为高分辨率时钟声明变量?
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- CUDA 的性能取决于声明变量
- 如何在不为其声明变量的情况下获取和使用常量值的地址?
- C++声明变量时自动类型推断而不初始化
- 在不同循环中多次声明变量的优点
- 奇怪的错误 C2131 与 constexpr 声明变量
- 是否可以在 "if" 语句中声明变量?
- 在python-ctypes中声明变量并传递给dll函数
- 在递归函数C++中声明变量
- 只有一个定义/声明时标头声明变量的多堆定义错误
- 奇怪的未声明变量编译器错误
- 我在C++程序中声明变量时遇到问题
- 在命名空间中声明变量
- C++ lambda 按值捕获,而无需更早声明变量
- 声明变量以保存字符串列表时的内存分配
- 如何声明C 变量应突变
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 在同一命名空间中声明变量和函数是否出错?[C++]