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

时间:2016-01-28 00:13:43

标签: c

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

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')
{
}

1 个答案:

答案 0 :(得分:0)

因此,要剖析while (ispunct((unsigned char)*s) || parser_comment_level != 0 || (unsigned char)*s != '\0'),我们需要了解子表达式之间的相互作用。如果任何子表达式为真,我们必须继续循环,所以如果(unsigned char)*s != '\0',我们必须继续循环。因此,似乎ispunct((unsigned char)*s),它也取决于*s,实际上永远不会重要。这是表达错误的线索。

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

好多了。现在,点击null终止符将退出循环,但前一个表达式也是如此。

简而言之,当子表达式应该退出循环时使用&&,当子表达式继续循环时使用||