5个回答
展开全部
做下补充:
首先,i+=1与i=i+1有一种情况下是不同的,举个例子:int i;i+=1.0;与int i;i=i+1.0;第一种情况编译会通过,而第二种情况会报错(可能损失精度),也就是楼上说的需强制类型转换的那种情况;
至于i++与++1之前的区别网上介绍很多,在此不再赘述(个人感觉对编程开发没什么意义)
再说下i=i+1与i++,有两点:1.对i的结果来说是一样的;2.而对于两个表达式的结果来说是不一样的,前面一个表达式返回值是i+1,后一个表达式的返回值是i;
另外对于机器来说,i++对应的机器码只需要一条指令,而i=i+1缺需要至少2条
还有就是好多人经常讨论的执行效率问题:
++i 最快
i++ 次之,多用一个临时变量
i+=1 第三,需要取地址
i=i+1 取地址并多用一个临时变量
(请略加参考,其实意义不大)
首先,i+=1与i=i+1有一种情况下是不同的,举个例子:int i;i+=1.0;与int i;i=i+1.0;第一种情况编译会通过,而第二种情况会报错(可能损失精度),也就是楼上说的需强制类型转换的那种情况;
至于i++与++1之前的区别网上介绍很多,在此不再赘述(个人感觉对编程开发没什么意义)
再说下i=i+1与i++,有两点:1.对i的结果来说是一样的;2.而对于两个表达式的结果来说是不一样的,前面一个表达式返回值是i+1,后一个表达式的返回值是i;
另外对于机器来说,i++对应的机器码只需要一条指令,而i=i+1缺需要至少2条
还有就是好多人经常讨论的执行效率问题:
++i 最快
i++ 次之,多用一个临时变量
i+=1 第三,需要取地址
i=i+1 取地址并多用一个临时变量
(请略加参考,其实意义不大)
展开全部
前提
i = 2;
j = i++; // j为2,i为3,i先赋值,再加1,因为++在后面,你就记住,就是后加1。
j = ++i; // j为3,i为3,i先加1,再赋值,因为++在前面,你就记住,就是先加1。
i += 1;
与
i = i + 1;
是一样的。
我自己看了一下,好像百度的字体,i与j分得不是很清楚,不知道你能看出来,哪个是j,哈哈。
i = 2;
j = i++; // j为2,i为3,i先赋值,再加1,因为++在后面,你就记住,就是后加1。
j = ++i; // j为3,i为3,i先加1,再赋值,因为++在前面,你就记住,就是先加1。
i += 1;
与
i = i + 1;
是一样的。
我自己看了一下,好像百度的字体,i与j分得不是很清楚,不知道你能看出来,哪个是j,哈哈。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i++,++i,i=i+1 都属于变量自加1
i++,++i单独用的时候没有区别,都是自加1
假设n = 1;
k = n + i++;结果k = 2, i = 2,也就是说i++是表达式完成后它才执行
k = n + ++i;结果k = 3, i = 2,i先自加1然后再与表达式进行计算
通常新手会很在这个地方钻牛角尖,但是可以告诉你,这种问题没什么意义,真正写程序不会写这种 k = n + ++i - i++;这种乱七八糟的格式,这也是不规范的
i++,++i单独用的时候没有区别,都是自加1
假设n = 1;
k = n + i++;结果k = 2, i = 2,也就是说i++是表达式完成后它才执行
k = n + ++i;结果k = 3, i = 2,i先自加1然后再与表达式进行计算
通常新手会很在这个地方钻牛角尖,但是可以告诉你,这种问题没什么意义,真正写程序不会写这种 k = n + ++i - i++;这种乱七八糟的格式,这也是不规范的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i++:先调用i,再加1。int i = 1; system.out.print(i++); 输出1,执行完i就变成2了
i+=1 与i=i+1 效果基本一致,但在细节上有出入,特别i不是int型时,牵扯类型转换的问题,可以查查资料
++i:i先执行+1,再输出。int i = 1;system.out.print(++i); 输出2
i+=1 与i=i+1 效果基本一致,但在细节上有出入,特别i不是int型时,牵扯类型转换的问题,可以查查资料
++i:i先执行+1,再输出。int i = 1;system.out.print(++i); 输出2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
仔细看运算那一张,算法很重要的,我就没仔细看..哈哈.....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询