gpt4 book ai didi

c - 使用具有多个条件的 while 循环

转载 作者:行者123 更新时间:2023-11-30 17:05:50 25 4
gpt4 key购买 nike

当我需要使用多个条件时,我总是对 while 感到困惑。我相信这是正确的。

1 and 1 = 1
1 and 0 = 0
1 or 1 = 1
1 or 0 = 1

我需要对 while 循环做一些特殊的事情吗?如果语句在多个条件下似乎总是表现得像我所期望的那样。有没有一个好的经验法则可以遵循?

就像这里一样。因为我通常会尝试||我首先使用 && 似乎从来没有起作用。但是我当然需要一个||在这种情况下,只是因为我做了与平常相反的事情。

const char *s = buffer;
parser_comment_level = 0
while (ispunct((unsigned char)*s) || parser_comment_level != 0)
{
}

我想将上面的内容更改为。这是正确的还是我需要使用 && ?使用括号是个好主意吗?如果是的话,如何使用?

const char *s = buffer;
parser_comment_level = 0
while (ispunct((unsigned char)*s) || parser_comment_level != 0 || (unsigned char)*s != '\0')
{
}

最佳答案

那么,来剖析while (ispunct((unsigned char)*s) || parser_comment_level != 0 || (unsigned char)*s != '\0')我们需要理解子表达式之间的相互作用。如果任何子表达式为 true,我们必须继续循环,因此 if (unsigned char)*s != '\0' ,我们必须继续循环。因此看起来 ispunct((unsigned char)*s) ,这也取决于*s ,永远不会真正重要。这是表达错误的线索。

while ((ispunct((unsigned char)*s) || parser_comment_level != 0) && (unsigned char)*s != '\0')

好多了。现在,点击 null 终止符将退出循环,但前面的表达式也会退出循环。

简而言之,使用&&当任一子表达式应退出循环时,并且 ||当任一子表达式应继续循环时。

关于c - 使用具有多个条件的 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35050685/

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