使用+ =在C++中的条件运算

Rga*_*arg 1 c++

以下陈述是做什么的?
gcc的输出是:1 101.
谁能解释为什么会这样呢?

int a = 100, b = 108, c = 2;
a += b ? c = 1 : c = 0;
cout << c << " " << a;
Run Code Online (Sandbox Code Playgroud)

sel*_*bie 5

它相当于:

a += (b ? (c=1) : (c=0));
Run Code Online (Sandbox Code Playgroud)

扩大:

a = a + (b ? (c=1) : (c = 0));  // if (b!=0) then let c=1, else let c=0
Run Code Online (Sandbox Code Playgroud)

填写a和b:

a = 100 + (108 ? (c=1) : (c = 0));
Run Code Online (Sandbox Code Playgroud)

由于108不是"假"(0)表达式,c=1因此执行赋值.赋值的副作用是赋值等于赋值.并将该分配的结果添加到:

a = 100 + (c=1);
Run Code Online (Sandbox Code Playgroud)

这相当于:

t = (c = 1); // t is 1
a = 100 + t;
Run Code Online (Sandbox Code Playgroud)

因此,因为t是1:

a = 100 + 1;
Run Code Online (Sandbox Code Playgroud)