gpt4 book ai didi

c - ! do while 循环中的运算符

转载 作者:行者123 更新时间:2023-12-02 08:14:29 25 4
gpt4 key购买 nike

我只是在做一个关于 C 中插入排序的教程,我正在努力理解 !运算符用作 do while 循环的条件。

条件只是 while (!done) 但我不明白它怎么知道 什么 不应该等于变量 done。像 while (done==0) 这样的东西对我来说更有意义。

我才刚刚开始编码,如果答案真的很明显,我很抱歉!我试着用谷歌搜索它,但我发现很难表达问题......

代码如下:

void insertionSortArray (int arr[])
{
for(int i = 1; i < SIZE; i++)
{
int value = arr[i];
int j = i -1;
int done = 0;
do
{
if (arr[j]>value)
{
arr [j+1] = arr[j];
j - -;
if (j<0)
done = 1;
}

else
done = 1;

} while (!done);

arr [j+1] = value;
}
}

谢谢!!

最佳答案

它们是完全一样的东西。 !donedone == 0 可以互换。关于 C 的问题是:它很长一段时间都没有 “true” bool 类型。 bool 值仅在 C99 中引入。

所有零值都被认为是假的,其他值都是真的。这就是为什么 !done 为真,只要 done == 0(done 为 0 -> false,!false -> )。 ! 是逻辑 NOT 运算符,一如既往,并且做它做的事情:否定后面的任何内容。因此 done = 0 => done 是 false,!done -> false 的反面,是 true。

如果您发现 done == 0 更容易阅读,那么一定要这样写。虽然,更常见的是看到较短的版本。

非常常见的错误/正确检查:

type *foo = malloc(123 * sizeof *foo);
if (!foo)
exit(1); // failed to alloc memory

void my_function(int *ptr, size_t size)
{
if (!ptr)
return; // a NULL pointer was passed
// ...
}

长话短说

因为这两种陈述是可以互换的,所以请写下您认为最有意义的内容。或许大声朗读这两个陈述(尽管可能看起来很愚蠢)会让你改变主意:

while done equals zero
//vs
while not done

现在这两个句子中哪一个最有意义?

关于c - ! do while 循环中的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43182675/

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