gpt4 book ai didi

c++ - 循环语句警告的冒泡排序算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:09 24 4
gpt4 key购买 nike

我看到一段冒泡排序代码,一开始我以为代码是错误的。但是在编译运行之后,令我惊讶的是它居然可以运行。我想知道为什么第一个 for 循环中的第二个语句不是条件而是赋值。另外,这段代码怎么不会死循环呢?

PS:它会产生一个警告:“suggest parentheses around assignment used as truth value [-Wparentheses]”提示第一个 for 循环。令人惊讶的是,这不是错误。

#include <iostream>

void bubblesort(int A[], int n)
{
for (bool sorted = false; sorted = !sorted; n--)
{
for (int i = 1; i < n; ++i)
{
if (A[i-1] > A[i])
{
int tmp = 0;
tmp = A[i];
A[i] = A[i-1];
A[i-1] = tmp;
sorted = false;
}
}
}
}

int main()
{
int a[5] = {1,4,5,2,3};

bubblesort(a, 5);

for (unsigned int i = 0; i < 5; ++i)
{
std::cout << a[i] << std::endl;
}

return 0;
}

最佳答案

赋值的结果是左操作数,所以条件

sorted = !sorted

在分配新值后使用 sorted 作为条件。那里的警告是为了通知您使用赋值作为条件有时不是您所期望的。你可以使用

(sorted = !sorted) == true

使警告静音。

关于c++ - 循环语句警告的冒泡排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367895/

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