gpt4 book ai didi

c++ - 为什么我在以下代码中的每个输出后都得到 32767?

转载 作者:行者123 更新时间:2023-12-01 14:48:30 25 4
gpt4 key购买 nike

const bool ASCENDING = 0;
const bool DESCENDING = 1;

int sortDigit(int number, bool order)
{

if (order == ASCENDING && number > 0)
{
for (int i = 1; i <= 9; i++)
{
for (int j = number; j > 0; j /= 10)
{
if (j % 10 == i)
{
cout << i;
}
else
continue;
}
}
}

if (order == DESCENDING && number > 0)
{
for (int i = 9; i >= 0; i--)
{
for (int j = number; j > 0; j /= 10)
{
if (j % 10 == i)
{
cout << i;
}
}
}
}
}

int main()
{
cout << "sortDigit(54321, ASCENDING) = " << sortDigit(54321, ASCENDING) << endl;
}

该代码应该按排列或降序对数字进行排序。
每次我运行它时,按所需顺序排列数字后,输出后跟 32767
前任:-
sortDigit(54321,升序)
输出:- 1234532767

最佳答案


cout << "sortDigit(54321, ASCENDING) = " << sortDigit(54321, ASCENDING) << endl;

您的职能 sortDigit()没有返回值,因此您的代码具有未定义的行为,在您的情况下,它在我的 0 中打印 32767。
12345是在您的函数中打印出的有序数字,后跟打印在 main() 中的未定义值.

如果你只是:
int main() {
sortDigit(54321, ASCENDING);
}

您将获得正确的输出。

Live sample

如果你有这个选项,使用 std::sort 会更简单形成 <algorithm>标准库:
int arr[] = { 4,6,9,4,2,1 };

sort(&arr[0], &arr[sizeof(arr)/sizeof(arr[0])]); // ascending

sort(&arr[0], &arr[sizeof(arr)/sizeof(arr[0])], greater<int>()); //descending

Live Sample

使用 C++ 标准容器,如 std::vectorstd::array也建议。

关于c++ - 为什么我在以下代码中的每个输出后都得到 32767?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60695580/

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