这在c ++中如何工作?

时间:2014-01-06 19:57:09

标签: c++

我遇到了这样的情况:

if(true,false)
{
    cout<<"A";
}
else
{
    cout<<"B";
}

实际上它写出了B.这个陈述是如何起作用的?根据我的观察,始终将最后一个值计算在内。但那有什么意义呢?

由于

3 个答案:

答案 0 :(得分:3)

来自http://www.cplusplus.com/doc/tutorial/operators/

  

逗号运算符(,)用于分隔两个或多个表达式   包含在只有一个表达式的地方。什么时候设定   必须评估表达式的值,只评估最右侧的值   表达被认为。

     

例如,以下代码:a =(b = 3,b + 2);

     

首先将值3分配给b,然后将b + 2赋值给变量   一个。因此,最后,变量a将包含值5而变量   b将包含值3。

所以这里

if(true,false)
{

}

评估为if(false)

答案 1 :(得分:2)

逗号运算符将运行逗号左侧的任何内容,将其丢弃,然后运行运算符右侧的任何内容。在这种情况下:

if (true, false)

始终等同于if (false),因此它永远不会运行if条件,并且始终会运行else条件。

作为旁注:永远不要写这样的代码。它没有任何目的,只是混淆代码。

答案 2 :(得分:2)

根据http://www.cplusplus.com/doc/tutorial/operators/

  

逗号运算符(,)用于分隔两个或多个表达式,这些表达式只包含一个表达式。当必须为一个值计算表达式集时,只考虑最右边的表达式。

例如,请考虑以下内容:

int a, b;
a = (b=3, b+2);

b设置为3,但是equals运算符只关心下半部分,因此返回的实际值为5。至于有用性?这是有条件的:)