A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ytzhyp

黑马帝

  • 黑马币:6

  • 帖子:6

  • 精华:0

© ytzhyp 黑马帝   /  2011-12-30 11:01  /  2384 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ytzhyp 于 2011-12-31 10:41 编辑

比如说i= i+1,i+=i;还有i++,和++i有区别么
说的详细点

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

8 个回复

倒序浏览
i=i+1和i+=1两个效果是一样的,但后者效率高点
i++,后加指需要执行完当前这条语句之后,i再加1,即是不影响当前表达式的i值
++i前加,当前执行到这个表达式时就加1,也就是i变成i+1进行运算

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报

i

本帖最后由 张绍成 于 2011-12-30 11:20 编辑

比如说i= i+1,i+=i;还有i++,和++i有区别么
i = i + 1 ;// 将 i 的值 加 1 ;
i + = i ;//和上句代码的意思一样,使用中没感觉有什大的优点(可能是看起来 比较简洁)
i ++ ;// i 自加 1 ;不是过是先使用 后增加。比如 int i = 1 ; b = i ++ ; 运行结果 b = 1 ;
++ i ;// i 自加 1;不是过是先增加,后使用。比如 int i = 1 ; b = ++ i ; 运行结果 b = 2 ;

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 想好了再写 于 2011-12-30 11:37 编辑

i=i+1跟i+=1效果是一样的,
因为i+=1
在C语言里就是i=i+1

i++是先使用i的值然后进行i本身的加1运算
++i则是先将i本身加1,再使用变量的值
比如:
int i=23;
int age;
age=i++;
那么age的值是23,而i的值就是24
而如果上面的age=i++换成age=++i
则age的值为24,i的值也是24

还有就是i++和++i有一个效率问题
从上面就可以看到
i++要先 返回一个值而这个值要先保存到一个临时变量里,然后在 i+1
++i就直接进行本身的加1运算,不用进行临时数据的变量的保存
所以前者效率会低一点
还有这个效率问题就是如果i是int型的话,效率问题会被优化掉,也就是说如果i是int,那么++i跟i++ 的效率一样,如果是别的类型的话,就会出现效率问题。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
杨强 + 1
ytzhyp + 1

查看全部评分

回复 使用道具 举报
首先
++和++i都是对i进行+1的操作,不同的是i++是在i值被使用后才+1而++i是i值在被使用之前就+1;拿你的例子进行说明
先分析count=(i++)+(i++)+(i++);运算是从左向右的,由于i++是在i值被使用后才+1所以第一个括号的(i++)应该为3,但是i的值变成了4,当运算第二个括号(i++)此时i的值是4所以第二个括号的(i++)为4但是此时i的值变成5了,类推第三个括号的(i++)为5但是此时i的值变成了6;也就是说该等式变为count=(3)+(4)+(5)=12此时i的值为6.
在分析int j=3;
  count=(++j)+(++j)+(++j); ++j的操作顺序是先将j加1后在进行操作,所以第一个括号(++j)先将j加1此时j变为4,所以括号的值相当于4;第二个括号将j加1后j的值变为5;第三个括号将j加1后j的值变为6所以等式相当于 count=(4)+(5)+(6)此时j的值是6
综上i与j 相当。简单的说i++就是先使用的i的值然后再加1,而++i就是先将i+1,然后使用i改变后的值。
希望你能采纳
那个i=1+i;i+=i;貌似应该没啥区别吧

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
杨强 + 1
ytzhyp + 1

查看全部评分

回复 使用道具 举报
i+=i是    i= i+1的简写两个原理上一样
i++进行运算的时候i值第一次不加1原值参与运算
++i进行的运算的时候值先加1再进行运算
回复 使用道具 举报
付星 黑马帝 2011-12-30 17:31:39
7#
i++和i+=1;是样的,还有i=i+1,i+=1是i=i+1的简写,那i++就更简了
对于i++和++i来说
1.如果它们不赋给一个变量,那它们是等价的
2.如果
i=0;
j=0;
j=i++;那么j赋值了0,i再自加成了1
j=++i;那么i先自加1结果就是1,再赋值给j,j现在也是1了
回复 使用道具 举报
刘健 黑马帝 2011-12-30 20:06:06
8#
i++举个例子就是for(int i=0;i<10;i++)是每次循环完后i+1即第一次for循环i=0,第二次i=1。而++i是第一次i=1,第一次i=2
回复 使用道具 举报
马新乐 黑马帝 2011-12-30 21:10:35
9#
简单点说 K= i++是先赋值后运算  K得到的值等于i
K=++i 则得到的值为i+1  因为是先运算后赋值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马