(NSLog) 常用的占位符(format specifiers)
%@ 对象 object
%@可用于输出整个NSArray和NSDictionary
-------------------------------------------------------------------------------------
%p 指针 pointer
对于非指针变量, 可以配合"&"输出它的内存地址
1
2
|
int
i = 100;
NSLog
(@
"%p"
, &i);
|
-------------------------------------------------------------------------------------
%i或%d int
-------------------------------------------------------------------------------------
%u unsigned int
-------------------------------------------------------------------------------------
%li unsigned long
主要用于输出NSArray的count和输出sizeof()
-------------------------------------------------------------------------------------
%lld long long
-------------------------------------------------------------------------------------
%llu unsigned long long
-------------------------------------------------------------------------------------
%f float/double
值得一提的是, float精度在小数点后6位左右, 为了保证准确多用double少用float.
%f有隐含的格式:
"%"+"至少占多少位(不够用空格代替)"+"."+"小数点后保留多少位"+"f"
1
2
|
double
myVal = 345.67321;
NSLog
(@
"%10.3f"
, myVal);
|
1
2
|
double
myVal = 345.67321;
NSLog
(@
"%-10.3f"
, myVal);
|
-------------------------------------------------------------------------------------
%c character
-------------------------------------------------------------------------------------
%s C string
NSLog的使用方法
NSLog的定义
NSLog定义在NSObjCRuntime.h中,如下所示:
void NSLog(NSString *format, …);
基本上,NSLog很像printf,同样会在console中输出显示结果。不同的是,传递进去的格式化字符是NSString的对象,而不是chat *这种字符串指针。
示例
NSLog可以如下面的方法使用:
NSLog (@"this is a test");
NSLog (@"string is :%@", string);
NSLog (@"x=%d, y=%d", 10, 20);
但是下面的写法是不行的:
int i = 12345;
NSLog( @"%@", i );
原因是, %@需要显示对象,而int i明显不是一个对象,要想正确显示,要写成:
int i = 12345;
NSLog( @"%d", i );
格式
NSLog的格式如下所示:
- %@ 对象
- %d, %i 整数
- %u 无符整形
- %f 浮点/双字
- %x, %X 二进制整数
- %o 八进制整数
- %zu size_t
- %p 指针
- %e 浮点/双字 (科学计算)
- %g 浮点/双字
- %s C 字符串
- %.*s Pascal字符串
- %c 字符
- %C unichar
- %lld 64位长整数(long long)
- %llu 无符64位长整数
- %Lf 64位双字