我遇到了这样的情况:
if(true,false)
{
cout<<"A";
}
else
{
cout<<"B";
}
实际上它写出了B.这个陈述是如何起作用的?根据我的观察,始终将最后一个值计算在内。但那有什么意义呢?
由于
答案 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
。至于有用性?这是有条件的:)