混淆在'if'语句中使用逗号

Vic*_*tor 13 c# c++ if-statement

我在C++中有这段代码:

ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1);
Run Code Online (Sandbox Code Playgroud)

但它在C#中看起来如何呢?

Mar*_*ers 14

这意味着:

if (y[0]>y[1])
{
    inhi = 1;
    ihi = 0;
} else {
    inhi = 0;
    ihi = 1;
}
Run Code Online (Sandbox Code Playgroud)

或者用另一种方式编写(用C++编写):

inhi = (y[0]>y[1]);
ini = !inhi;
Run Code Online (Sandbox Code Playgroud)


Jes*_*der 9

逗号运算符绑定低于赋值,因此表达式

inhi=1,0
Run Code Online (Sandbox Code Playgroud)

设置inhi1,然后返回0.同样

inhi=0,1
Run Code Online (Sandbox Code Playgroud)

inhi0并返回1.这一切都相当于

if(y[0] > y[1]) {
   inhi = 1;
   ihi = 0;
} else {
   inhi = 0;
   ihi = 1;
}
Run Code Online (Sandbox Code Playgroud)

如果可以的话,我建议用这种方式重写它.inhi并且ihi似乎具有相同的目的(在此声明中),并且?:您已经获得的组合三元运算符()和逗号运算符赋予它们不同的权重.