社区
Java SE
帖子详情
请教,int i=0;i=i++;在c++中输出i=1而在java中输出i=0???
sameboat
2003-10-18 03:42:18
在C++中,
int i=0;
i=i++;
等价于
int i=0;
i=i;
i++;
故输出i=1
====================================================
而在java中输出i=0;这是怎么回事呢???
...全文
107
9
打赏
收藏
请教,int i=0;i=i++;在c++中输出i=1而在java中输出i=0???
在C++中, int i=0; i=i++; 等价于 int i=0; i=i; i++; 故输出i=1 ==================================================== 而在java中输出i=0;这是怎么回事呢???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cbhyk
2003-10-18
打赏
举报
回复
请看
public class Temp
{
public static void main(String[] args)
{
int i=0;
i=i++;
}
}
的字节码(JDK 1.3.1_01),由javap -c -verbose Temp生成:
Compiled from Temp.java
public class test.Temp extends java.lang.Object {
public test.Temp();
/* Stack=1, Locals=1, Args_size=1 */
public static void main(java.lang.String[]);
/* Stack=1, Locals=2, Args_size=1 */
}
Method test.Temp()
0 aload_0
1 invokespecial #9 <Method java.lang.Object()>
4 return
Method void main(java.lang.String[])
0 iconst_0 //将 0 压入堆栈。
1 istore_1 //弹出 0 并将它存储在局部分变量表中索引为 1 的位置 (i)。
2 iload_1 //压入索引 1 处的值 (i)。
3 iinc 1 1 //将存储在索引 1 处的 i 加 1。
6 istore_1 //弹出 0 并将它存储在局部变量表中索引为 1 的位置 (i)。
7 return
可以看出:“iinc 1 1”把i加1后,“istore_1”又把栈顶的0存入i,所以i的最后结果是0。
不知其它的编译器编译出来的字节码是不是和上面的(JDk 1.3.1_01)一样。
jackensun
2003-10-18
打赏
举报
回复
同意楼上的意见
sameboat
2003-10-18
打赏
举报
回复
我觉得可能涉及到内部编译机制。
littlecpu
2003-10-18
打赏
举报
回复
高手都不懂这样用++,都死光了
sameboat
2003-10-18
打赏
举报
回复
高手呢???
sameboat
2003-10-18
打赏
举报
回复
高手呢???
zhanghuazhanghome
2003-10-18
打赏
举报
回复
关注
sameboat
2003-10-18
打赏
举报
回复
up
sameboat
2003-10-18
打赏
举报
回复
up
关于C/
C
++
和
Java
中
的j=j
++
问题
” j = j
++
“ (博客搬家,原MyBlog)初识问题前段时间,一朋友说起一个有趣的程序,关于
Java
中
的j=j
++
问题public class Test{ public static void main(String [] args){
int
j=0; for(
int
i=0;i<100;i
++
){ j=j
++
;
java
中
j是什么意思_i 1 j 是什么意思 i.j.k是什么意思
i 1 j 是什么意思 i.j.k是什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!c语言 i/=
++
j 是什么意思。 是i=j+1么相当于两句j=j+1;i=i/j;也就是 j先加然后i除以j自加后的值,得的结果赋值for(i=1;i<10;i
++
){for(j=1;j<=i;j
++
)解释一下这是什...
安卓版的
java
程序代码
正确例题 import
java
.util.*; public class Ha{ public static void main(String[] args) { String a[]={“a”,“b”}; for(
int
i=0;i<2;i
++
) for(
int
j=0;j<2;j
++
) System.out.pr
int
(a[i]+a[j]+"\n"); } } 正确例题 import
java
.util.Random; public class Ha{ public static void
java
移位运算符
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成
int
类型,对于byte、short、char和
int
进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结...
c
++
调
java
传参,
Java
和
C
++
的参数传递
问题的起源今天博主在用
Java
实现算法时,写了这样的代码:
Java
:private static void exchange(
int
x,
int
y){
int
temp = x;x = y;y = temp;}想调用exchange(a, b)交换变量a, b的值运行后发现a,b的值并没有交换然后再看了一眼上面的代码,心里默念MDZZ!!函数的参数传递的是值传递,形式参数x,y是函数的局部变量,...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章