什么条件适用于?

Art*_*iar 4 c c99

对不起,如果这太简单了.我想知道哪些条件正好发生了.有没有一种方法能够捕获这个而不用在if块内部重复它们?我正在使用C语言.

while ( l < 0 || l > 2 || c < 0 || c > 2 )
Run Code Online (Sandbox Code Playgroud)

Ste*_*ner 6

你可以使用逗号表达式,即类似的东西(expr1,expr2),它们总是从左到右进行评估,每个都有一个序列点,; 所以你可能依赖于expr1之前评估过expr2,而后者则作为逗号表达式的结果.

有了这个,以下应该可以工作,并且x0..3取决于哪个条件成立:

int x;
while ( (x=0,l < 0) || (++x,l > 2) || (++x,c < 0) || (++x,c > 2) )
Run Code Online (Sandbox Code Playgroud)

  • 你可以重置条件:`while((x = 0),(l <0 || ...` (2认同)