c - C中的评估&&运算符

标签 c logical-operators

当我用 C 编写程序时,遇到了一个问题。 && 不计算第二个操作数,如果第一个为假。我知道这被称为短路行为。但是我想要执行第二个操作数,请看下面的代码知道为什么?

while(a-- && b--){
    //some statements
}

请告诉我完成任务的不同方法。非常感谢!

最佳答案

如果 a 和 b 足够小以至于 a*b 不会溢出:

while( (a--) * (b--) )
{...}

如果它们可以很大:

while( ((a--) ? 0xf : 0) & ((b--) ? 0xf : 0) )
{...}

关于c - C中的评估&&运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26199426/

相关文章:

R:If 语句包含 is.null 作为通过 OR 连接的条件之一

c - 从键盘获取事件(例如按键)

C 无限指针循环(由重复值引起?)

c - 为 C 程序分析 ARM 上的功耗

Ruby 逻辑运算符 - 一个但不是两个数组中的元素

c - 执行逻辑不!仅使用位运算

python - Windows 管道 : Write from C - read in Python

c - 当 '->head' 指向另一个结构时,为什么我会留下 0x104567910 必须指向结构/union ?

c# - 运算符 '||' 不能应用于类型 'bool?' 和 'bool?' 的操作数

java - 使用 AND,OR 条件在 Java 中查询 MongoDB