c# - &&= 和 ||= 运算符

标签 c# c++ c logical-operators

Possible Duplicates:
Why doesn't Java have compound assignment versions of the conditional-and and conditional-or operators? (&&=, ||=)
Why does a “&&=” Operator not exist?

今天上类写了如下LOC(b和b1的真实身份保密:)

b &&= b1; // meaning b = b && b1; 

我盯着它看了几秒钟,意识到不存在这样的运算符。可以肯定的是,我点击了编译,但它失败了。为了确定我引用了标准。

是否有没有这样的运营商的具体原因?我能想到一些:

  1. b &&= b1b = b && b1 可能不等价,因为 && 的短路评估。
  2. &&= 很丑
  3. &&= 很少需要

我并不是说拥有这样的运算符会很有用,不。我也没有声称上述三个原因中的任何一个或全部都不足以避免创建该运算符。我的问题如下:我正在监督是否有更严重的原因?

最佳答案

我不知道为什么问题和一些答案都提到相应逻辑运算符的短路行为是一个潜在问题。

定义 &&=||= 运算符绝对没有与短路相关的问题。它们应该用 += 和其他类似的运算符统一定义,这意味着 a &&= b 应该等价于 a = a && b,但 a&&= 版本中只被评估一次。这反过来意味着如果 a 最初为零,则根本不会评估 b。很简单。

所以,它们在语言中不存在的唯一原因是,嗯,“只是因为”。

关于c# - &&= 和 ||= 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3962991/

相关文章:

c++ - 在 C++ 中转换为 void* 和 typedef

c++ - pthread_self() 很贵吗?

c# - 当结构未初始化时编译器给出错误,如果我们尝试访问属性而不是变量

c# - 如何将变量连接到某些 <asp : . ./> 属性中?

C++ 返回对模板的引用

c++ - 使用 SSE 和 STL vector 计算平均值

c - 使用互斥锁和 pthreads 的 C 中的 Reader Writer 程序

c# - 在 ASP .NET MVC 应用程序中使用 UserManager 的种子方法期间没有创建用户

c# - 使用 ToArgb() 后跟 FromArgb() 不会产生原始颜色

c++ - 在 C++ 中缩小 2D vector