gpt4 book ai didi

c++ - 变量在没有赋值的情况下具有值 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:33 25 4
gpt4 key购买 nike

#include <iostream>
#include <string>


using namespace std;

int count_number_place(int number)
{

int number_placement;

while (number >= 1)
{
number_placement++;
cout << number_placement <<endl;
number/=10;
}

return number_placement;
}



int main(int argc, const char * argv[])
{
// insert code here...

int user_input_number;

cout << "Please enter your number here" << endl;
cin >> user_input_number;
cout << "User input number is "<< user_input_number <<endl;
cout << "The numbers of digits in the input number is :" << count_number_place(user_input_number) << endl;

return 0;
}

我正在尝试创建一个小程序来计算给定数字的位数。
每当我输入像 200 这样的数字时,预期的结果都是 3。相反,我得到了 7963。当我在 number_placement 行放置断点时,我得到了 7961 的默认值,这很奇怪,因为代码中的任何地方都没有分配该值。

你能解释一下为什么我会得到这个结果吗?

最佳答案

只需将您的功能更改为

int count_number_place(int number)
{

int number_placement = 0; // assign 0

while (number >= 1)
{
number_placement++;
cout << number_placement <<endl;
number/=10;
}

return number_placement;
}

也就是改变

int number_placement;

int number_placement = 0; 

如果您尝试访问未初始化的变量,您将获得垃圾值,因为这是未定义的行为。编译器只会给它一些垃圾值。

这个链接可能有用

What happens to a declared, uninitialized variable in C? Does it have a value?

关于c++ - 变量在没有赋值的情况下具有值 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com