gpt4 book ai didi

c++ - 为什么在输出中出现意外值 6295648 和答案 11110001?这里的输入是 241 和 2

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:06 25 4
gpt4 key购买 nike

void base(int n,int b)
{
int x[20],k=0;
while(n!=0)
{
x[k]=n%b;
n=n/b;
k=k+1;
}
for(int i=0;i<=k;i++)
{
cout<<x[k-i];
}
return ;
}

int main()
{
int number,baise;
cin>>number;
cin>>baise;
base(number,baise);
return 0;
}

基地扩建计划。我为此编写了一个函数,在 main() 中,我使用 2 个参数(我想将其转换为另一个基数)和 baise(这是一个数字转换成的基值)来调用它。程序运行,它也给出输出,但对于输入,它给出了一些不需要的值,在本例中为 6295648。

输入:

241  
2

输出

629564811110001    

但输出应该仅为 11110001。我不明白为什么值 6295648 来了。

最佳答案

for(int i=0;i<=k;i++)
{
cout<<x[k-i];
}

在循环的第一次迭代中,执行的语句是:

cout << x[k];

x[k] 从未被赋值,这是一个 UB。

将循环初始化语句更改为x = 1 解决了这个问题。或者更明确地说,

for(int i = k-1; i >= 0; i--)
{
cout << x[i];
}

关于c++ - 为什么在输出中出现意外值 6295648 和答案 11110001?这里的输入是 241 和 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482619/

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