Sian 发表于 2014-2-26 22:51:15

关于优先级的一个例子(信息量大)

看一个示例:
#include <stdio.h>

int main() {
    for (int i = 0; i < 5; i++) {//进行5次循环

      if (!i%2) {//对i进行取余计算(<span style="line-height: 1.5;">0、1、0、1、0</span><span style="line-height: 1.5;">),再取非,得到的数值应该是1、0、1、0、1</span>根据以上分析,得出的结果应该是1、3,可输出的结果却是:1
2
3
4为什么?关键就在于if(!i%2),取非的优先级是很高的(参考C语言运算符优先级),所以结果是1%2、0%2、0%2、0%2、0%2,即结果为1、0、0、0、0,从而continue只被执行一次,第一次。所以会输出1、2、3、4这样的结果。
这个例子对于初学者来讲有点绕,但信息量很大,建议多思考一下。


页: [1]
查看完整版本: 关于优先级的一个例子(信息量大)