0
#import <Foundation/Foundation.h>

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

    @autoreleasepool {

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

        NSLog(@"%@",str);

    }
    return 0;
}

これは、文字 'x' の代わりに数値 120 を出力します。なぜこれを行うのですか?

4

2 に答える 2

3

これには何の問題もありません: の ASCII コードはx10 進数で 120 です。この'x'構文は、ASCII 文字としての表現を使用して小さな整数定数を入力するための便利な構文です。構文以外では、一重引用符で囲まれた定数は通常の整数です。

数値を文字として再解釈する場合は、NSLog呼び出しで対応する書式指定子を使用し、オブジェクトcharから値を取得します。NSNumber

NSNumber *str = [NSNumber numberWithChar:'x'];
NSLog(@"%c", [str charValue]);
于 2012-08-24T03:51:42.910 に答える
1

NSNumber ドキュメントから:

NSNumber は、任意の C スカラー (数値) 型として値を提供する NSValue のサブクラスです。

この場合、それはxの ASCII コードを保持しています - 数字のような構造が文字を保持することをどのように期待できますか? ;))

char を使用する場合は、そのまま使用してくださいchar。文字列全体が必要な場合は、 を使用してNSStringください。

于 2012-08-24T03:54:38.827 に答える