相关疑难解决方法(0)

逗号运算符优先使用时?:运营商

我不知道为什么下面两个子程序的结果不同:

    int a , b;

    a = 13, b=12;
    (a > b)? (a++,b--):(a--,b++); // Now a is 14 and b is 11

    a = 13, b=12;
    (a > b)? a++,b-- : a--,b++;   // Now a is 14 but b is 12
Run Code Online (Sandbox Code Playgroud)

但是对于这些情况,结果是相同的:

    a = 13, b=12;
    (a < b) ? a++,b-- : a--,b++; // Now a is 12 and b is 13

    a = 13, b=12;
    (a < b) ? (a++,b--) : (a--,b++); // Again a is 12 and b …
Run Code Online (Sandbox Code Playgroud)

c c++ comma operator-precedence

13
推荐指数
1
解决办法
496
查看次数

在C++中,条件运算符中逗号运算符的优先级是什么?

这里发生了什么事?

#include <iostream>
using namespace std;

int main(){

    int x=0,y=0;
    true? ++x, ++y : --x, --y; 
    cout << "x: " << x << endl;
    cout << "y: " << y << endl; //why does y=0 here?

    x=0,y=0;
    false ? ++x, ++y : --x, --y; 
    cout << "x: " << x << endl;
    cout << "y: " << y << endl;
}

x: 1
y: 0

x: -1
y: -1
Run Code Online (Sandbox Code Playgroud)

第二种情况似乎很好.我希望x和y在第一种情况下增加到1,但只有左手操作数增加.

c++ comma operator-precedence

10
推荐指数
1
解决办法
1308
查看次数

为什么三元运算符中的多个语句未执行

我对以下内容感到困惑:

#include <iostream>

int main()
{
  bool a = true;
  int nb = 1;
  int nb2 = 2;
  a ? nb++, nb2++ : nb--, nb2--;
  std::cout << " (nb,nb2) = (" << nb << "," << nb2 << ")";
}
Run Code Online (Sandbox Code Playgroud)

结果:

(nb,nb2) = (2,2) 
Run Code Online (Sandbox Code Playgroud)

为什么nb2不等于3

c++ ternary-operator

3
推荐指数
1
解决办法
960
查看次数

标签 统计

c++ ×3

comma ×2

operator-precedence ×2

c ×1

ternary-operator ×1