我们来考虑下面的C代码片段。奇怪状态检查
while(!var_can_be_0_or_1 && foo_returns_0_or_1(arg1, arg2)) {
body;
}
这是一个简单的条件声明,做我不明白的东西。但是让我们说我有两个宏
#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(!condition1 && condition2) {
execute some codes;
}
这里,condition1
= und
,und是一个int,其值可以是0或1(和NOTHEELSE)。 0和1分别被宏观化为FALSE
和TRUE
。和condition2
= prcd(topsymb, symb)
;这是一个函数,其原型被提及为int prcd(char char);
。它再一次返回0或1和NOTHEELSE。
现在我想知道的是如何while
循环括号内的条件得到评估。
希望这可以解决问题。 :)
'我想知道的是如何评估while循环括号内的条件。希望这可以解决问题。“ - 不,它不会清除事情。答案仍然和以前一样。当且仅当满足条件时,while循环内的所有内容才被“评估”。 –
@SaniSinghHuttunen我亲爱的先生,当然你的答案保持不变。我只是为那些理解这个问题的人做了一些修改。但你首先知道我究竟在问什么。再次感谢:) – allocated
如果condition1和condition2是:1,0或1,1 - 只评估condition1,并且循环不执行; 0,0 - 两种条件都被评估,但循环不执行; 0,1 - 两个条件都被评估,循环执行。 – Dmitri