黑马程序员技术交流社区
标题:
在循环中关于++的问题?
[打印本页]
作者:
梦里听传说
时间:
2014-10-9 04:24
标题:
在循环中关于++的问题?
看到一道题 说不出来原理 求解惑 在循环或线程中 为什么 i=i++ ;i会一直为0?原理是什么啊?
作者:
张波
时间:
2014-10-9 09:04
i = i++; 是先把i 赋值给右边i, 然后再++。
作者:
不系之舟王
时间:
2014-10-9 09:30
i++,i的值每次自增,而i++的值不变
作者:
weiyi
时间:
2014-10-9 10:00
有这种情况吗?求题目
作者:
梦里听传说
时间:
2014-10-9 12:20
weiyi 发表于 2014-10-9 10:00
有这种情况吗?求题目
我已经搞明白了, 你自己测试下,定义一个循环 i=i++; i的值一直为0
作者:
梦里听传说
时间:
2014-10-9 12:24
int i=0;
while(true)
{
i=i++;
System.out.printlin(i);
}
打印的结果一直是0;
这道题问的就是结果为0的原理?
作者:
梦里听传说
时间:
2014-10-9 12:25
输出语句写错了多写了个i
作者:
weiyi
时间:
2014-10-9 15:44
好像在哪里见过,听说i=i++;是问题语句,不同的编译器有不同的结果,这种语句不应该出现在程序中
作者:
x564573138
时间:
2014-10-9 18:09
沙发。,。。。。
作者:
EDDY_Liang
时间:
2014-10-9 18:37
i++不就给i赋值了吗?
作者:
梦里听传说
时间:
2014-10-9 19:19
这题考的就是对JAVA内存的理解
作者:
tiancairc
时间:
2014-10-9 19:35
梦里听传说 发表于 2014-10-9 12:24
int i=0;
while(true)
{
这个问题不难理解,i++是先输出,后加1.也就是说后面是system语句会先把i输出后才加1.所以第一次执行输出0是没有问题的;为什么会一直输出0呢,应该跟你的判断条件有关了。while(true)想表达什么意思呢,我一直没有看懂,我就理解成了true表达的是i=0.如果i=0就执行下面的语句,也就会一直执行输出0。但是计算机怎么理解的就不好说了。所以,应该true这儿出现了问题。
作者:
杨佳名
时间:
2014-10-9 20:20
梦里听传说 发表于 2014-10-9 12:24
int i=0;
while(true)
{
因为i++的+1运算是要到i下次出现的时候才会执行,就是说此时i++的值还是0,循环内就赋值了i=0
作者:
高泳
时间:
2014-10-9 20:40
i=i+1;
i=i++;
不一样
作者:
踏云
时间:
2014-10-9 21:27
楼主的问题涉及++的运行机制。j++的过程,首先是将j的值传给temp,然后i=i+1;然后再返回temp给调用者。
所以过程是,
int temp=i;
i=i+1;
然后又把temp返回给j:
i=temp;
所以j的值永远都是初始值0;
如果只是要算次数的会直接 i++;就可以了
i++;约等于i=i+1;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2