理解这个表达式有困难:
(x + y - 1) / y * y
Run Code Online (Sandbox Code Playgroud)
运算符优先级如下(根据我的理解和K&R2,2.12表2.1):
1)评估parens中的内容:首先是(x + y),然后是(x + y)-1
2)'*'运算符的优先级高于'/'所以它应该先行,比特看起来(y*y)被评估,然后(x + y-1)的结果除以乘积(y)*Y).我不太清楚.
3)我听说过通常以这种形式写的:
(x + y - 1) / y * y
Run Code Online (Sandbox Code Playgroud)
那是对的吗?非常感谢你提前!
不,*并/具有相同的优先权.(它被称为" 优先 ",而不是"优先")
(x + y - 1) / y * y
Run Code Online (Sandbox Code Playgroud)
将会
( ( (x+y) - 1 ) / y ) * y
Run Code Online (Sandbox Code Playgroud)
操作树将是:
*
/ \
/ y
÷
/ \
/ y
-
/ \
/ 1
+
/ \
x y
Run Code Online (Sandbox Code Playgroud)