我模拟了程序逻辑提取出来可以单独查看这个奇怪现象的代码。
代码是这样的
正常情况下,if判断句是可以在在判断0>-1成立,打印right
代码是这样的
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
NSMutableArray
*array = [[
NSMutableArray
alloc]initWithObjects:@
"1"
,@
"2"
,@
"3"
,
nil
];
for
(
int
i = 0;i < 3; i++)
{
[array removeLastObject];
}
//int temp = [array count];
int
index = 0;
if
(index >= [array count] - 1 )
{
NSLog
(@
"right!!!"
);
}
else
{
NSLog
(@
"what????!!!!><"
);
}
[array release];
|
正常情况下,if判断句是可以在在判断0>-1成立,打印right
但是,这里却会跑到else条件下。
知道原因了
原来是无符号整数的原因。也就是说
对于无符号整数来说,你给它负数的值,会变成一个很大的数
本文深入探讨了一个使用Objective-C语言中数组操作时遇到的逻辑错误,重点在于无符号整数的使用及其对判断条件的影响。通过分析代码片段,解释了为什么在特定条件下,原本预期的逻辑并未按预期执行。
1307

被折叠的 条评论
为什么被折叠?



