c++ - 产生不同值的局部变量

标签 c++ scope

我是这样调用函数的,

decimal2binary(1, 4);  

我错误地在以下函数的定义部分重新定义了变量m

void decimal2binary(int m, int n) {
int arr[n];
cout<<"m:"<<m<<endl;
for(int i=0;i<n;i++)
{
if(m==0)
{
    arr[i]=0;
}
else
{       
    arr[i]=m%2;     
    int m=m/2;
    cout<<"m:"<<m<<endl;
}
}

当我运行代码时,我得到了这样的输出,

m:1
m:1184170
m:592085
m:296042
m:148021

为什么这个重复变量 m 会产生奇怪的值,比如 1184170..592085。请告诉我原因。

最佳答案

您在 else block 中定义了另一个名为 m 的变量,它隐藏了函数参数 m,它的范围从 之后开始code>int m,在表达式m/2中未初始化。

关于c++ - 产生不同值的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422177/

相关文章:

rust - 在 Rust 中,Box :ed struct compared to a plain struct? 的放置顺序是否存在差异

c++ - 使用 yaml-cpp 解析 YAML !!timestamp(日期时间)

c++ - 当析构函数调用抽象函数时会发生什么

c++ - C++:迭代器的复制构造函数

javascript - 页面刷新时清除服务中的数据

Javascript 函数作用域 - 是否使用 console.log?

c++ - 如何在可变类型包中获取类型的索引?

c++ - 如何使用 gtest 构造检查存储在 vector 中的结构(字段)?

javascript return 语句以停止执行其余语句

python - 使用不修改函数的参数创建装饰器