Objective C整数数学错误(2200 - 100 = 1800) - 不确定原因

时间:2014-07-14 01:31:23

标签: ios objective-c

我正在开发一个使用NSInteger计算开启和关闭的IOS项目。在2200读取的时间相当于晚上10点。我想知道是否有一些东西在关闭后的一个小时内,所以我将整数(工作)的实际世界时间与结束时间 - 100进行比较,但数学并没有按预期工作。

自定义类:

@property (assign) NSInteger *sus;
@property (assign) NSInteger *sue;

在控制器中:

custom_class *location = object
resultINT = real world time in Integer with 24 hr

NSLog(@"Result INT:   %i", resultInt);
NSLog(@"location.sue:    %i", location.sue);
NSLog(@"Location - 1hr      %i", location.sue -100);
NSInteger *yellowEnd = location.sue - 100;
NSLog(@"Yellow      %i", yellowEnd);

结果:

2014-07-13 18:23:51.269 Time-Genesis-Marcus[7591:416078] Result INT:   1823
2014-07-13 18:23:51.269 Time-Genesis-Marcus[7591:416078] location.sue:    2200
2014-07-13 18:23:51.269 Time-Genesis-Marcus[7591:416078] Location - 1hr      1800
2014-07-13 18:23:51.270 Time-Genesis-Marcus[7591:416078] Yellow      1800

为什么第三和第四行没有返回2100?感谢

1 个答案:

答案 0 :(得分:5)

您正在进行指针运算而不是整数运算。

将您的代码更改为此问题以解决问题

@property (assign) NSInteger sus;
@property (assign) NSInteger sue;

有关您获得的结果的解释,请阅读Pointer Arithmetic

基本上(int *)2200 - 100结果2200 - 100 * sizeof(int) sizeof(int)为4