使用这些变量:
NSInteger dataStart;
uint64_t dataSize[1];
const unsigned char *beginning;
NSInteger bytesEnd;
......在这些值:
dataStart = 499
dataSize[0] = 427
beginning = 9060864
bytesEnd = 9061793
......以下代码:
NSLog(@"dataStart = %d, dataSize[0] = %d, beginning = %d, bytesEnd = %d",
dataStart, dataSize[0], (NSInteger)beginning, bytesEnd);
...将其发送到控制台:
dataStart = 499, dataSize[0] = 427, beginning = 0, bytesEnd = 9060864
换句话说,在数组之后插入了一个额外的零,撞到了其他变量。它始终这样做。我正在使用xcode 3.2.3。这里发生了什么?
[编辑强调:由于演员表错,所以不仅仅是打印零值的旧版本。它正在插入一个额外的零,然后打印正确的值,它应该打印bytesEnd,而不是打印bytesEnd。]
谢谢,
答案 0 :(得分:2)
只是一个猜测,但你是在64位模式编译?在这种情况下,开始指针是64位,但NSInteger是32位,所以你只打印指针的高位32位,这是零。
我想这是一个人为的例子,因为没有一个心智正常的人会这样投。正确?
答案 1 :(得分:1)
您的格式选择器错误。 %d不足以打印uint64_t,即datasize [0]。使用%ld。