想象一下以下代碼:
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 很陌生,所以我很感激任何可以獲得有關該問題的更多資訊的來源。
uj5u.com熱心網友回復:
你不能投射 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但不要同時使用兩者。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/393676.html
