我用cpp编写了这个程序,当我打印变量“amount”时,我得到了一些不寻常的值。为什么会这样?

I write this program in cpp and when I print the variable `amount` I get some unusual value..why is it?

提问人:Roshan R. Prasad 提问时间:9/19/2023 更新时间:9/19/2023 访问量:58

问:

# include <iostream>

int main(){
    int value = 0, amount, set = 0;
    std::cout << amount << std::endl;
}

在执行此文件时,我得到结果,为什么会这样??.650

这是代码和结果的图像

我只是想用 c++ 打印一个变量!!

C++语言

评论

2赞 HolyBlackCat 9/19/2023
了解未定义行为的概念。读取未初始化的变量会导致未定义的行为。
1赞 Ken White 9/19/2023
您初始化了 和 ,但未初始化 。当你不初始化它时,你希望它输出什么?另外,请不要上传代码/数据/错误的图像。valuesetamount
1赞 Ted Lyngmo 9/19/2023
你期望它打印出什么价值?如果你期望,那么你为什么要初始化和显式?0valueset0
0赞 paddy 9/19/2023
由于 和 未使用,我不明白为什么它们根本不需要出现在这个程序中。请提高编译器警告的级别和/或注意它们。当您尝试从未初始化的变量中读取数据时,编译器应发出警告。valueset
1赞 john 9/19/2023
您从未设置过任何特定值,但您对它应该如何打印有一些未说明的期望。当问这样的问题时,你至少应该说出你期望发生的事情。amount

答:

6赞 Remy Lebeau 9/19/2023 #1

您的变量是未初始化的,因为您没有被赋予任何值,因此您的代码表现出未定义的行为。该变量具有以前存储在它占用的内存块中的任何随机值。amount

3赞 Tarun Prasad 9/19/2023 #2

在 C++ 中,每当声明未显式赋值的变量时,它都包含“垃圾数据”。

在声明变量而不初始化变量时,其值未定义,并且可以包含先前操作遗留的任何任意数据或声明时的内存状态。这些数据通常是不可预测的,可能会导致程序中出现错误和意外行为。

这正是您的变量所发生的情况。amount

评论

0赞 john 9/19/2023
严格来说,只有这个答案的最后一段是正确的。剩下的就是半真半假了。C++ 所说的只是使用未初始化的变量会导致未定义的行为。