黑马程序员技术交流社区

标题: 有收获,大家分享(关于i++与++i) [打印本页]

作者: 余睿    时间: 2012-11-6 10:56
标题: 有收获,大家分享(关于i++与++i)
本帖最后由 余睿 于 2012-11-6 11:06 编辑

    在网上看到的,感觉有些收获,跟大家分享一下。
    在代码书中或课堂上我们都知道++i和i++在作为一个单独语句使用时没有区别,即相当于i=i+1; 而作为语句的一部分时,如a=++i; 和a=i++; ++i先执行加1操作,再执行赋值操作(因++在前),而i++是先执行赋值操作,再执行加1操作(因++在后)。但这种论述未将其中更深的运行机制讲出来,尤其是在if或while等判断语句中,下面对其进行探讨:

作为单独语句存在,如下面的两段代码:
int i=0;

if(i++){...}














int i=0;

if(++i){...}




作为语句的一部分存在,如下面的一段代码:
int i=4,j=3;

if((i=j++)!=4){...}


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



作者: 余睿    时间: 2012-11-6 11:09
呃 有些问题
编译器与0相比较 这和++运算符无关,写个if(i)一样会比较,因为这是控制表达式
我想删了这个 怎么才能删啊
作者: 吕鹏飞    时间: 2012-11-8 00:42
这个对于初学者,很容易混的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2