我遇到了这样的情况:
if(true,false)
{
cout<<"A";
}
else
{
cout<<"B";
}
实际上它输出的是B。这个语句是如何工作的?根据我的观察,总是最后一个值起作用。但是这样做的意义是什么呢?
谢谢。
if(true,false)
{
cout<<"A";
}
else
{
cout<<"B";
}
实际上它输出的是B。这个语句是如何工作的?根据我的观察,总是最后一个值起作用。但是这样做的意义是什么呢?
谢谢。
从http://www.cplusplus.com/doc/tutorial/operators/获得
逗号运算符(,)用于分隔两个或多个表达式,这些表达式被包含在只期望一个表达式的位置上。当要对表达式集合进行求值时,只有最右边的表达式被考虑。
例如,以下代码:a = (b=3,b+2);
将首先向变量b分配值3,然后将b + 2分配给变量a。因此,在结束时,变量a将包含值5,而变量b将包含值3。
所以在这里
if(true,false)
{
}
评估为if(false)
逗号运算符将运行逗号左侧的任何内容,将其丢弃,然后运行运算符右侧的任何内容。 在这种情况下:
if (true, false)
这段代码中的 false
永远等同于 if (false)
,因此它永远不会运行 if
条件,并且总是运行 else
条件。
顺便提一下:永远不要编写这样的代码。它没有任何作用,只会使代码更加难以理解。
int a, b;
a = (b=3, b+2);