c - While 中哪个条件为真?

标签 c c99

抱歉,如果这太简单了。我想知道哪些条件正在发生。有没有一种方法更能捕捉到这一点,而无需在带有 if 结构的 block 内重复它们?我正在使用 C 语言。

while ( l < 0 || l > 2 || c < 0 || c > 2 )

最佳答案

您可以使用逗号表达式,例如 (expr1,expr2),它总是从左到右计算,每个 , 都有一个序列点;因此,您可能会认为 expr1expr2 之前求值,而后者作为逗号表达式的结果。

这样,下面的代码就可以工作了,x 将在 0..3 的范围内,具体取决于哪个条件为真:

int x;
while ( (x=0,l < 0) || (++x,l > 2) || (++x,c < 0) || (++x,c > 2) )

关于c - While 中哪个条件为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53254211/

相关文章:

c++ - GCC/G++ 对 : void* to int 的不同态度

c - 我应该如何获得浮点值的小数部分?

c - a[a[0]] = 1 会产生未定义的行为吗?

c - 无限循环,我不知道为什么

c - 在C中,我想连续打印4个十进制数,然后打印接下来的4个

javascript - 将基于 JIT 的 lang 编译为 Webassembly

c - 当 main() 函数不返回零时会发生什么

c - int foo(int Grade, void* Factor) - 如何在函数内部使用该因子?

c - 在定义整数常量表达式时间接禁止(或不禁止?)运算符(在 C 中)