Andrej Levkovitch Asked:2020-08-20 19:28:03 +0000 UTC2020-08-20 19:28:03 +0000 UTC 2020-08-20 19:28:03 +0000 UTC for中的动作顺序 772 是否有保证的动作顺序: for (int i = 0, j = 0; i < size; ++i, j = i * coaf) { Tobish,是否保证++i在计算之前先计算j = i * coaf? c++ 2 个回答 Voted Best Answer ixSci 2020-08-20T19:32:34Z2020-08-20T19:32:34Z 是的,但这for与它本身无关,因为。它的第三个块是任何表达式。这是一个逗号保证。 user7860670 2020-08-20T19:37:04Z2020-08-20T19:37:04Z for在这种情况下,没关系,主要是表达式++i, j = i * coaf包含逗号运算符,并且对于该运算符,左侧计算的所有副作用都发生在右侧的任何计算之前: 8.5.19 逗号运算符 [expr.comma] 1 逗号运算符从左到右分组。 expression: assignment-expression expression , assignment-expression 以逗号分隔的一对表达式从左到右求值;左边的表达式是一个弃值表达式(8.2)。与左表达式关联的每个值计算和副作用都在与右表达式关联的每个值计算和副作用之前排序。结果的类型和值是右操作数的类型和值;结果与其右操作数具有相同的值类别,并且如果其右操作数是位域,则结果是位域。如果右操作数是临时表达式 (15.2),则结果是临时表达式。
是的,但这
for
与它本身无关,因为。它的第三个块是任何表达式。这是一个逗号保证。for
在这种情况下,没关系,主要是表达式++i, j = i * coaf
包含逗号运算符,并且对于该运算符,左侧计算的所有副作用都发生在右侧的任何计算之前: