【发布时间】:2017-07-07 06:21:49
【问题描述】:
让我们考虑以下 C 代码 sn-p。
while(!var_can_be_0_or_1 && foo_returns_0_or_1(arg1, arg2)) {
body;
}
这是一个简单的 while 条件语句,它完成了我无法理解的事情。但是假设我有两个宏
#define TRUE 1
#define FALSE 0
谁能告诉我(或者更确切地说向我解释)我们在这个while循环的条件下检查什么?我的意思是循环体将在什么条件下执行以及它将在什么条件下跳过?
阐述
我在一本关于数据结构的书中找到它,该程序将中缀表达式字符串转换为后缀字符串。确切的代码是这样的--->
int prcd(char char);
int und, outpos;
char symb, topsymb;
while(!und && prcd(topsymb, symb)) { <----- Stuck on this one real bad
postr[outpos++] = topsymb;
popandtest(&opstk, &topsymb, &und);
}
详细说明可能是不必要的,只是为了将事情放在上下文中。 ;)
编辑:
如果这个问题对于试图提供帮助的人来说有些不清楚,我真的很抱歉,所以我将在这里稍微解释一下我真正要问的是什么
让我们忘记我在本文的详细部分中编写的代码,回到第一个,假设我们有一个 while 循环,简单明了的 while 循环
while(!condition1 && condition2) {
execute some codes;
}
这里,condition1 = und,und 是一个 int,它的值可以是 0 或 1(没有其他值)。 0 和 1 分别宏化为 FALSE 和 TRUE。和condition2 = prcd(topsymb, symb);这是一个原型被称为int prcd(char char); 的函数。它再次返回 0 或 1 而没有其他任何内容。
现在我想知道如何评估while 循环括号内的条件。
希望这可以解决问题。 :)
【问题讨论】:
-
I want to know is how the condition inside the while loop brackets gets evaluated. Hope this clears things up.- 不,它并没有把事情弄清楚。答案还是和以前一样。当且仅当满足条件时,while 循环内的所有内容都会被“评估”。 -
@SaniSinghHuttunen 亲爱的先生,您的回答当然是一样的。我只是为那些难以理解问题的人做了一些编辑。但你一开始就知道我在问什么。再次感谢:)
-
如果条件 1 和条件 2 是:1,0 或 1,1 -- 只计算条件 1,不执行循环; 0,0 -- 两个条件都被计算,但循环不执行; 0,1 -- 两个条件都被计算,循环执行。
标签: c while-loop conditional