c - 为什么 C/C++ 中缺少逻辑运算符(&&= 和 ||=)的赋值?

标签 c operator-precedence

1) 为什么没有像有和差赋值那样的逻辑运算符赋值?

bool a = true;
bool b = false;
a = a || b;
a ||= b; // syntax error!
a |= b;   // OK.

2) 对 bool 变量应用按位运算符是什么意思? 它与使用逻辑运算符一样吗?

最佳答案

确实 &&=||= 从 C 中“缺失”。我认为原因之一是 C 中的逻辑 AND 和 OR 执行短路,这在缩写形式中会有点奇怪。但是不要在它们的位置使用按位赋值运算符。相反,只需写:

a = a && b;
c = c || d;

如果您具有规范的真/假值(1 和 0),则按位运算符将起作用。但如果应用于非规范值,例如 5 和 2,您将得到不同的结果(5 && 2 是 1,但 5 & 2 是 0)。

关于c - 为什么 C/C++ 中缺少逻辑运算符(&&= 和 ||=)的赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36527204/

相关文章:

c - 字符串转换为整数而不是 double

c - 为什么这些构造使用增量前和增量后未定义的行为?

Python 优先级

java - 为什么 x == (x = y) 与 (x = y) == x 不一样?

c++ - 如何避免等待信号已发送的 pthread_cond_t

c++ - snprintf 段错误

c - 如何在 C 的共享内存中保存一个 int 和一个数组?

c - 从头开始用 C 语言编程 ARM

关于运算符优先级的澄清

c - 何时在 c 中计算表达式中括号内的赋值运算符?