当前位置:嗨网首页>书籍在线阅读

17-优先级

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.3.5 优先级

递增运算符和递减运算符都有很高的结合优先级,只有圆括号的优先级比它们高。因此, x y++ 表示的是 (x) (y++) ,而不是 (x y)++ 。不过后者无效,因为递增和递减运算符只能影响一个变量(或者,更普遍地说,只能影响一个可修改的左值),而组合 x y 本身不是可修改的左值。

不要混淆这两个运算符的优先级和它们的求值顺序。假设有如下语句:

y = 2;
n = 3;
nextnum = (y + n++)*6;

nextnum 的值是多少?把 yn 的值带入上面的第3条语句得:

nextnum = (2 + 3)*6 = 5*6 = 30

n 的值只有在被使用之后才会递增为 4 。根据优先级的规定, ++ 只作用于 n ,不作用于 y + n 。除此之外,根据优先级可以判断何时使用 n 的值对表达式求值,而递增运算符的性质决定了何时递增 n 的值。

如果 n++ 是表达式的一部分,可将其视为“先使用 n ,再递增”;而 ++n 则表示“先递增 n ,再使用”。