【问题标题】:Adding two integer numbers from array从数组中添加两个整数
【发布时间】:2022-01-25 16:04:17
【问题描述】:

想象一下下面的代码:

    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 的新手,因此我可以得到有关该问题的更多信息的任何来源。

【问题讨论】:

  • NSArray 只能容纳对象:即NSNumbers。 -objectAtIndex: 返回数字的指针;将其转换为 NSInteger 不是您想要做的。相反,使用[[arr objectAtIndex:0] integerValue];

标签: objective-c xcode


【解决方案1】:

您不能投射 NSNumberNSInteger。你必须打电话给integerValue

10 多年来,有更方便的数组字面量语法以及更方便的索引订阅语法

NSArray *arr = @[@200, @100];

NSInteger n1 = [arr[0] integerValue];
NSInteger n2 = [arr[1] integerValue];
NSInteger r = n1 + n2;

NSLog(@"n: %ld", r);

对于字符串格式,请使用id,但不能同时使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多