当str为零时,为什么([str length] - 2)大于0?

Olo*_*lof 1 for-loop objective-c

当运行以下代码时,它进入for循环并运行NSLog.为什么会这样?

NSString *aString = nil;

for (int i=0; i<([aString length]-2); i++) {
   NSLog(@"Inside loop.");
}
Run Code Online (Sandbox Code Playgroud)

因为我的[aString length]-2结果是-2而且那个小于0?

Jim*_*uls 5

更确切地说,-[NSString length]返回一个无符号整数,所以从零减去两个(记住,调用任何方法打开nil给你零)不会给你-2,它给你一个非常非常大的数字.将其投射到int(或NSInteger)以获得所需的结果.