表达式周围的括号和大括号基本上做同样的事情吗?

Do both parentheses and braces around expressions basically do the same thing?

简单地说,这两个 for 循环的运作方式是否相同:

for (int i = 0; i < (p_size < size ? p_size : size); i++);
for (int i = 0; i < {p_size < size ? p_size : size}; i++);

?

循环在一个方法(成员函数)里面,p_size是它的参数,size是一个属性(成员变量)。 Microsoft Visual Studio 2015 编译了这两个代码,但是 p_size 没有像代码中带有大括号的其他参数(在编辑器中)那样着色。

这是有效代码:

for (int i = 0; i < (p_size < size ? p_size : size); i++);

这是无效代码:

for (int i = 0; i < {p_size < size ? p_size : size}; i++);

像这样在表达式中间加花括号是无效的。

我一般也会推荐 std::min:

for (int i = 0; i < std::min(p_size, size); i++);