从数组中添加两个整数
Adding two integer numbers from array
想象一下下面的代码:
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@200, @100, nil];
NSInteger n1 = (NSInteger)[arr objectAtIndex:0];
NSInteger n2 = (NSInteger)[arr objectAtIndex:1];
NSInteger r = n1 + n2;
NSLog(@"n: %lid", r);
我得到的结果是:-4309586476825365866d
,预期结果是:300
。
我还尝试评估调试器中的各个表达式,以检查从数组中读取值时得到的结果,如下所示:po (NSInteger)[arr objectAtIndex:0]
。这显示了正确的数字,但在尝试将它们相加时:po (NSInteger)[arr objectAtIndex:0] + (NSInteger)[arr objectAtIndex:0]
,生成了无效结果。
知道为什么吗?我是 Objective-C 的新手,因此感谢任何我可以获得有关该问题的更多信息的来源。
您不能将 NSNumber
转换为NSInteger
。你必须打电话给 integerValue
.
而且 10 多年来有更方便的数组文字语法以及更方便的索引订阅语法
NSArray *arr = @[@200, @100];
NSInteger n1 = [arr[0] integerValue];
NSInteger n2 = [arr[1] integerValue];
NSInteger r = n1 + n2;
NSLog(@"n: %ld", r);
对于字符串格式,请使用 i
或 d
,但不能同时使用两者。
想象一下下面的代码:
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@200, @100, nil];
NSInteger n1 = (NSInteger)[arr objectAtIndex:0];
NSInteger n2 = (NSInteger)[arr objectAtIndex:1];
NSInteger r = n1 + n2;
NSLog(@"n: %lid", r);
我得到的结果是:-4309586476825365866d
,预期结果是:300
。
我还尝试评估调试器中的各个表达式,以检查从数组中读取值时得到的结果,如下所示:po (NSInteger)[arr objectAtIndex:0]
。这显示了正确的数字,但在尝试将它们相加时:po (NSInteger)[arr objectAtIndex:0] + (NSInteger)[arr objectAtIndex:0]
,生成了无效结果。
知道为什么吗?我是 Objective-C 的新手,因此感谢任何我可以获得有关该问题的更多信息的来源。
您不能将 NSNumber
转换为NSInteger
。你必须打电话给 integerValue
.
而且 10 多年来有更方便的数组文字语法以及更方便的索引订阅语法
NSArray *arr = @[@200, @100];
NSInteger n1 = [arr[0] integerValue];
NSInteger n2 = [arr[1] integerValue];
NSInteger r = n1 + n2;
NSLog(@"n: %ld", r);
对于字符串格式,请使用 i
或 d
,但不能同时使用两者。