2012-08-24 46 views
0
#import <Foundation/Foundation.h> 

int main(int argc, const char * argv[]) 
{ 

    @autoreleasepool { 

     NSNumber *str = [NSNumber numberWithChar:'x']; 

     NSLog(@"%@",str); 

    } 
    return 0; 
} 

這將打印數字120而不是字符'x'。它爲什麼這樣做?爲什麼會變成數字120而不是我想要的字符'x'?

+0

恩,'NSNumber'是標量數字的包裝...你爲什麼期望得到不同的結果? – JustSid

+0

謝謝布拉德拉森更好地修改我的問題。 – zhengger

回答

3

這沒什麼錯:x的ASCII代碼是十進制的120。 'x'語法是用於使用它們的表示形式作爲ASCII字符輸入小整數常量的方便語法;除了語法之外,單引號中的常量是常規整數。

如果你想數重新解釋爲字符,從NSNumber對象使用相應的格式說明在NSLog通話,並獲得char值:

NSNumber *str = [NSNumber numberWithChar:'x']; 
NSLog(@"%c", [str charValue]); 
+0

非常感謝你,dasblinkenlight。這正是我所需要的。 – zhengger

+0

@zhengger歡迎您!如果這回答了您的問題,您可能需要通過點擊旁邊複選標記的大綱來接受答案。這會讓其他人知道你並沒有積極尋找改進的答案,並且在Stack Overflow上爲你贏得一個全新的徽章。 – dasblinkenlight

+0

已經過檢查。再次感謝。 – zhengger

1

NSNumber docs

NSNumber是NSValue的一個子類,它提供與任何C標量(數字)類型相同的值。

在這種情況下,它持有x的ASCII碼 - 你怎麼能期望一個數字結構來保存一個字母? ;))

如果要使用字符,請使用char。如果您需要一整串,請使用NSString

+0

非常感謝。重新解釋它會沒事的。 – zhengger

相關問題