我是这样调用函数的,
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/