#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSNumber *str = [NSNumber numberWithChar:'x'];
NSLog(@"%@",str);
}
return 0;
}
这将打印数字 120,而不是字符“x”。为什么这样做?
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSNumber *str = [NSNumber numberWithChar:'x'];
NSLog(@"%@",str);
}
return 0;
}
这将打印数字 120,而不是字符“x”。为什么这样做?
这并没有错:ASCII 码x
是十进制的 120。该'x'
语法是一种方便的语法,用于输入使用 ASCII 字符表示的小整数常量;除了语法之外,单引号中的常量是常规整数。
如果您希望将数字重新解释为字符,请在NSLog
调用中使用相应的格式说明符,并从对象中获取char
值:NSNumber
NSNumber *str = [NSNumber numberWithChar:'x'];
NSLog(@"%c", [str charValue]);
来自NSNumber 文档:
NSNumber 是 NSValue 的子类,它提供任何 C 标量(数字)类型的值。
在这种情况下,它保存x
的是 ASCII 码——你怎么能指望一个数字结构来保存一个字母?;))
如果要使用 char,请坚持使用char
. 如果您需要整个字符串,请使用NSString
.