哎,奇怪的问题,谁知道,求解释

寻找爱玩Tom 发布于 2013/07/22 12:13
阅读 686
收藏 0


加载中
0
红薯
红薯
面试题吗?
谁要是写这种代码,应该立马fire之,纯粹就是捣乱,没有一点可读性
0
寻找爱玩Tom
寻找爱玩Tom
、不是,我是在看游戏开发的例子,突然看到代码中有这段代码,然后我就理解不了,能解释下嘛
0
loyal
loyal

int count=1 ;  

count = count == 7 ? 0 :count++;   ===> (++在后不管了)

==>

count = count == 7 ? 0 :1;     >>> (count!=7)

==>

count = count =1;

==>

count = 1;

0
WeirdBIrd
WeirdBIrd

简化一下 , 

就是 count=count++

print(count); 的问题了

是在搞不懂,反汇编一下这段代码,看汇编 

0
寻找爱玩Tom
寻找爱玩Tom

可是,我是这样想的,如果从优先级来考虑,不是应该计算Count++


loyal
loyal
回复 @roywang : 看我最后的回复
r
roywang
回复 @loyal : 我还是无法接受你的解释,javap后13行,iinc 1,1,表示count有执行+1,难道说字节码也会忽略不执行?
loyal
loyal
你的疑问是++没有生效的问题吧?因为没有执行完啊,没有下一个语句的时候后置++一直不生效.还没登生效呢,又被赋值为1了.so这个例子中后置++无效了.
loyal
loyal
是啊,所以啊..擦,你没看我写的啊.
0
寻找爱玩Tom
寻找爱玩Tom
总算理解了,看来自己走入一个误区了
0
小耶果
小耶果
count = count == 7 ? 0 :count+1;
0
r
roywang
count++,不是先返回再加1么
loyal
loyal
你回家再学两年在出来逛技术论坛吧.
loyal
loyal
回复 @roywang : 哈哈!当然没有执行,还没等到执行呢就已经被覆盖了,你改成i++没被覆盖当然会变了!后置++先取变量值,后作+1.+1还没生效的时候就被覆盖了,懂?换了变量它覆盖谁去,我靠.最后你输出i当然被+1了.
r
roywang
回复 @loyal : 我看是你误人子弟,明明是count先返回再加1,但最后count被赋值1,不信你把count++改i++,变量分开,看i有没有改变?你再说++没执行?
loyal
loyal
看5楼的评论的评论.
r
roywang
那你解释下怎么就忽略++了?
下一页
0
寻找爱玩Tom
寻找爱玩Tom

我突然想到如果2次执行这个,会出现什么结果?


r
roywang
还是1 count返回1后虽然+1了,但是1又赋值给count了 所以count还是1
0
我是潮汐
我是潮汐
count++ 和 ++count  自己去搜吧,
返回顶部
顶部