C++ 为什么输出中出现意外值6295648和答案11110001?此处输入为241和2
输出C++ 为什么输出中出现意外值6295648和答案11110001?此处输入为241和2,c++,C++,输出 241 2 但输出应仅为11110001。我不明白为什么会出现值6295648。您的代码的问题是k在x[]数组中的赋值后,即在上一次迭代中k增加到8。然后在k-i的情况下,当i的值为0x[k-i]超出范围 629564811110001 #包括 使用名称空间std; 空基(整数n,整数b) { int x[20],k=-1; 而(n!=0) { x[++k]=n%b;//预增量 n=n/b; } 对于(int i=0;i>百色; 基地(编号:百色); 返回0; } 您的代码
241
2
但输出应仅为
11110001
。我不明白为什么会出现值6295648
。您的代码的问题是k
在x[]
数组中的赋值后,即在上一次迭代中k
增加到8
。然后在k-i
的情况下,当i
的值为0<代码>x[k-i]超出范围
629564811110001
#包括
使用名称空间std;
空基(整数n,整数b)
{
int x[20],k=-1;
而(n!=0)
{
x[++k]=n%b;//预增量
n=n/b;
}
对于(int i=0;i>百色;
基地(编号:百色);
返回0;
}
您的代码的问题是k
在x[]
数组中的赋值被增加post即在上一次迭代中k
被增加到8
。然后在k-i
的情况下,i
的值为0..x[k-i]
超出范围
629564811110001
#包括
使用名称空间std;
空基(整数n,整数b)
{
int x[20],k=-1;
而(n!=0)
{
x[++k]=n%b;//预增量
n=n/b;
}
对于(int i=0;i>百色;
基地(编号:百色);
返回0;
}
使用“i==0”,可以打印从未分配的x[k]
。您的程序通过访问未初始化的对象显示未定义的行为。使用“i==0”,可以打印从未分配的x[k]
。您的程序通过访问未初始化的对象显示未定义的行为。
#include <iostream>
using namespace std;
void base(int n,int b)
{
int x[20],k=-1;
while(n!=0)
{
x[++k]=n%b; //pre increment
n=n/b;
}
for(int i=0;i<=k; i++)//now k contains the index of the last element
{
cout<<x[k-i];
}
return ;
}
int main()
{
int number,baise;
cin>>number;
cin>>baise;
base(number,baise);
return 0;
}
for(int i=0;i<=k;i++)
{
cout<<x[k-i];
}
cout << x[k];
for(int i = k-1; i >= 0; i--)
{
cout << x[i];
}