一个简单的新手问题

天涯过客009 2020-03-18 06:55:51
int a=0; for(int x=0;x<2;x++){ a=a++; } 请解释为什么结果是0。如果不想回答也请不要误导或者灌水,谢谢。
...全文
124 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurtCat 2020-03-19
  • 打赏
  • 举报
回复
引用 5 楼 天涯过客009 的回复:
这些东西都是哪里有的?怎么我的书就没有这些知识的?
计算机很多知识是交叉交叉几门学科的,而且有的知识真的需要花大量时间才能理清楚。对于不懂的可以再问
天涯过客009 2020-03-18
  • 打赏
  • 举报
回复
引用 4 楼 hurtCat的回复:

//java源码
public static void main(String[] args) {
		int i = 0;
		i = i ++;
}

//查看字节码
         0: iconst_0
         1: istore_1
         2: iload_1
         3: iinc          1, 1
         6: istore_1
         7: return
想要详细解释这个问题需要有些储备知识:如计算机是如何进行算术运算的 答案是通过栈(如,Dijkstra双栈算法 ) 简单解释一下字节码 iconst_0: 在栈顶压入0 istore_1 :将栈顶元素保存在第一个变量中(即,int i = 0) iload_1 :将i压入栈顶 iinc 1,1:对第一个变量(即i)进行自增1次的操作,此时i = 1,栈顶为0 istore_1:将栈顶元素保存在第一个变量中(即 i = 0) 所以i的值又被替换为0
谢谢大家,等用上电脑了再统一结贴。
天涯过客009 2020-03-18
  • 打赏
  • 举报
回复
引用 4 楼 hurtCat的回复:

//java源码
public static void main(String[] args) {
		int i = 0;
		i = i ++;
}

//查看字节码
         0: iconst_0
         1: istore_1
         2: iload_1
         3: iinc          1, 1
         6: istore_1
         7: return
想要详细解释这个问题需要有些储备知识:如计算机是如何进行算术运算的 答案是通过栈(如,Dijkstra双栈算法 ) 简单解释一下字节码 iconst_0: 在栈顶压入0 istore_1 :将栈顶元素保存在第一个变量中(即,int i = 0) iload_1 :将i压入栈顶 iinc 1,1:对第一个变量(即i)进行自增1次的操作,此时i = 1,栈顶为0 istore_1:将栈顶元素保存在第一个变量中(即 i = 0) 所以i的值又被替换为0
这些东西都是哪里有的?怎么我的书就没有这些知识的?
hurtCat 2020-03-18
  • 打赏
  • 举报
回复

//java源码
public static void main(String[] args) {
		int i = 0;
		i = i ++;
}

//查看字节码
         0: iconst_0
         1: istore_1
         2: iload_1
         3: iinc          1, 1
         6: istore_1
         7: return
想要详细解释这个问题需要有些储备知识:如计算机是如何进行算术运算的 答案是通过栈(如,Dijkstra双栈算法 ) 简单解释一下字节码 iconst_0: 在栈顶压入0 istore_1 :将栈顶元素保存在第一个变量中(即,int i = 0) iload_1 :将i压入栈顶 iinc 1,1:对第一个变量(即i)进行自增1次的操作,此时i = 1,栈顶为0 istore_1:将栈顶元素保存在第一个变量中(即 i = 0) 所以i的值又被替换为0
qybao 2020-03-18
  • 打赏
  • 举报
回复
a=a++ 先把 a++的值0存入临时变量,然后a自增变成1,然后再把临时变量0赋给a,所以最终a还是0 即 a=a++ 相当于 t = a //表达式的值a存入临时变量t,t=0 a = a+1 //a自增变为1 a = t //再把临时变量t赋给a,所以a=0
Mandela688 2020-03-18
  • 打赏
  • 举报
回复
a++先赋值后进行运算(a=a+1)
qingyangi 2020-03-18
  • 打赏
  • 举报
回复
a++就是a=a+1,a=a++错误

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧