为什么([海峡长度] - 2)比当str是零0大?

当运行后续代码不言而喻内循环和运行NSLog的。 为什么会这样?

NSString *aString = nil; for (int i=0; i<([aString length]-2); i++) { NSLog(@"Inside loop."); }

随着我的身影[aString length]-2结果-2,这就是小于0?

--------------解决方案-------------

为了更准确, -[NSString length]返回一个无符号整数,所以减去两个来自零(记住,调用任何方法nil让你零)不给你-2,它给你一个非常,非常大的数字。 将其转换为int (或NSInteger ),以得到你想要的结果。

你问的循环,如果运行i<-2 ; 作为[NSString length]返回一个无符号整数,该值将换轮最大INT - 2。

你传递消息到零的对象有太多: [aString length] 。 我不知道这是定义的行为,并可能返回值的范围奇怪,但我怀疑它可能是足够聪明返回0.我的评论说,这种怀疑是真的。

分类:目标C 时间:2015-03-15 人气:3
本文关键词: 客观的C,循环
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.770 (s). 10 q(s)