i++与++i经典分析

来源:互联网 发布:淘宝太坑了女主角视频 编辑:程序博客网 时间:2024/05/19 05:31

简单地分为两种情况来说明:

1. 作为单独语句存在,如下面的两段代码:
  (1) int i=0;  
        if(i++){...} 

  (2) int i=0;
        if(i++){...}

分析:上面的条件判断代码虽然是以单独语句出现,但编译器将其等价于i++(或++i)>0,故在第一段代码中先执行i>0判定,再执行i++,因此条件体里的代码不被执行;而在第二段代码中先执行i=i+1,再执行i>0,因此条件里代码会被执行。

2. 作为语句的一部分存在,如下面的一段代码:
   int i=4,j=3;
   if((i++=j++)!=4){...}

分析:上面的代码中括号()的优先级比!=的优先级高,但编译器仍然将++运算符最后执行。即先执行赋值语句i=j,然后判定(i=3)!=4成立,最后执行i++和j++,接下去执行条件体里代码。

3. 最后总结:
   综上可知,当i++作为单独条件语句进行判定时,即使没有显示地声明与0的比较,编译器仍将加上与0的比较;当i++作为复合语句使用时,不管++是否在优先级更高的运算符中,++仍然最后才执行,即在当前所在语句操作执行之后。
  
  

原创粉丝点击