簡體   English   中英

Xcode:swift Int 和 Objective-C int 之間的不同行為

[英]Xcode: Different behavior between swift Int and Objective-C int

我正在嘗試將Swift function 轉換為Objective-C 這是函數的簽名

Swift:

func hammingWeight(_ n: Int) -> Int

Objective-C

-(int) hammingWeight:(int) number

我將此值傳遞給函數/方法:

00000000000000000000000000001011

在 Swift 的情況下,如果我打印 n 的值,它會打印:

p n
(Int) $R2 = 1011

在 Objective-C 的情況下打印:

p number
(int) $0 = 521

我對你們的問題是為什么 Objective-C 正在改變我通過的價值。 對我來說完全是無稽之談。 你們中的任何人都知道為什么會發生這種情況,或者是否有辦法解決這個問題?

非常感謝您對此提供的幫助。

這是完整的 Objective-C 實現:

@interface DoSomething : NSObject
@end

@implementation DoSomething

-(int) hammingWeight:(int) number {
    NSLog(@"number %d", number);
}

@end

int main(int argc, char *argv[]) {
    @autoreleasepool {
        DoSomething *doIt = [DoSomething new];
        [doIt hammingWeight:00000000000000000000000000001011];
    }
}

不同之處在於,在 (Objective-)c 中,由於前綴為0 ,您給定的數字被解釋為八進制,而在 Swift 中,它被解釋為十進制。

對於 Swift 前綴0o中的八進制 Int 文字。

Swift 文檔中有關八進制 Int 文字的信息
c 文檔中有關八進制整數的信息

// Swift:
(lldb) po 0o0000000000000000000000000001011;
521

(lldb) po 00000000000000000000000000001011;
1011

// Objective-C
(lldb) po 1011
1011

(lldb) po 01011
521

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM