逻辑或运算符

短路规则

其中一个条件满足了,其他条件就不执行,条件执行由左往右

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int i = 0, j = 0;
  6. if (++i || ++j)
  7. {
  8. printf("i = %d, j = %d\n", i, j);//结果为:i = 1, j = 0
  9. }
  10. return 0;
  11. }

逻辑运算符的优先级问题

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a = 2, b = 50;
  6. if (a+=b || b)//实际为:a = a + b || b;b || b优先进行比较的出一个真值1,变成a = a + 1
  7. {
  8. printf("a = %d, b = %d\n", i, j);//结果为:a = 3, b = 50
  9. }
  10. return 0;
  11. }