2012-11-03 81 views

回答

8

在C++中,,是运营商,因此(23,34)就像(23+34)的表达式的表达式。在前者中,,是运营商,而在后者中,+是运营商。

因此,表达式(23,34)的计算结果为最右边的操作数,即34,这就是为什么您的代码输出为34

我也想提一提,,不是一个函数调用操作:

int m = max(a,b); 

这里,行为的参数的分隔符。它不作为运营商。所以你传递了两个参数给函数。

然而,

int m = max((a,b), c); 

这里第一,是一个操作符,和第二,是一个隔板。所以,你仍然传递两个函数的自变量,而不是三个,这是相同的:

int m = max(b, c); //as (a,b) evaluates to b 

希望有所帮助。 :-)

+3

在这个例子中,关于括号作用的小注意事项会有所帮助,因为,运算符具有较低的优先级,然后=运算符。 int x = 23,34;根本不会编译。 – Tomek

+0

@Tomek:好点。谢谢。希望读者也能看到你的评论。 – Nawaz

+1

对于C也是如此。 –

14

在表达式中,逗号运算符将评估其所有操作数并返回最后一个操作数。这就是为什么在你的例子,x等于34

+0

而圆括号就像用于例如组合语句时一样。 – mrbrdo

+0

啊,是的。我忘记了在C++中有逗号运算符。 thx – pwks