我想问一下关于类型之间转换的非常简单的事情。
int theinteger = 75;
NSLog(@"Before theinteger is: %@", theinteger);
NSString *string = [NSString stringWithFormat:@"%d", theinteger];
NSLog(@"After theinteger is: %@", string);
输出就像
Before theinteger: 75
After theinteger: 114503696
这是什么意思?为什么转换后我的数据更改为114503696?
当我尝试
时int theinteger = -1;
没关系
Before theinteger: -1
After theinteger: -1
我错过了什么吗?
答案 0 :(得分:1)
在没有看到任何证据的情况下,我认为theinteger
实际上属于NSInteger
或int
类型。
使用说明符时,请尝试使用%i :
NSInteger theinteger = 75;
NSLog(@"theinteger is: %i", theinteger);
<强>输出强>
theinteger is: 75
Here's a list说明符。
答案 1 :(得分:1)
您不应该使用%@作为整数的格式说明符,就像在第一个日志语句中一样。但是,我的猜测是你在这里发布的代码实际上并不是你正在使用的代码,因为由于“整数”中的空格,这行NSLog(@"Before theinteger is: %@", the integer);
实际上不会编译。你能复制/粘贴你的实际代码吗?
无论如何,%@
是Objective-C对象的格式说明符。当NSLog()
看到%@
时,它会将其替换为通过在变量列表中的相应对象上调用-(NSString *)description
返回的NSString。在你的情况下,NSLog()
看到%@并假设这意味着整数是一个Objective-C对象,它不是。
如果要打印整数,则应使用%i的格式说明符(或几个整数格式说明符中的另一个):
NSLog(@"Before theinteger is: %i", theinteger);