我有这个令人烦恼的问题,但找不到答案。
由于某种原因,我的整数是二进制的,而不是十进制的。

这只是这一小部分,当我打印整数时,我得到:
0
4
8
12
16
...

我使用的代码:

    int *iInt=0;
for (Books *booktitles in appDelegate.book_sos.books ) {
    iInt =(int*)iInt + 1;
    NSLog(@"AAAAAAA%d",iInt);

}


我用NSNumber,NSInteger尝试过。

有人知道我可能在哪里错吗?提前致谢!

最佳答案

在声明iInt时丢失星号,请勿将其强制转换为int*。星号表示变量是指向给定类型的指针,当您增加指针时,它会增加指针的大小,在这种情况下为4个字节。您的代码应如下所示:

int iInt=0;
for (Books *booktitles in appDelegate.book_sos.books ) {
    iInt =(int)iInt + 1;
    NSLog(@"AAAAAAA%d",iInt);

}


有关相同问题的另一个版本,请参见Objective-C: How does 7-1=3?

注意,这是一个基本的C问题。它与Xcode或Objective-C无关。在任何平台上使用任何C编译器,您都会得到类似的结果。

10-05 21:15