Iphone 为什么此NSLog代码打印为零';什么是价值观?

Iphone 为什么此NSLog代码打印为零';什么是价值观?,iphone,objective-c,ios,string-formatting,nslog,Iphone,Objective C,Ios,String Formatting,Nslog,为什么此objective-c代码为值打印0,而在调试器中,我可以看到它们具有非0值: 代码 什么是印刷品 所有这些值都有CGFloat类型,但您试图将它们打印为ints。只需将%d替换为%f p.S.苹果开发人员必须偶尔打印CGRectS,因此他们想出了一些简便的方法。尝试NSLog(@“currFrame维度:%@”,NSStringFromCGRect(currFrame))所有这些值都有CGFloat类型,但您试图将它们打印为ints。只需将%d替换为%f p.S.苹果开发人员必须偶尔打

为什么此objective-c代码为值打印0,而在调试器中,我可以看到它们具有非0值:

代码

什么是印刷品


所有这些值都有
CGFloat
类型,但您试图将它们打印为
int
s。只需将
%d
替换为
%f


p.S.苹果开发人员必须偶尔打印
CGRect
S,因此他们想出了一些简便的方法。尝试
NSLog(@“currFrame维度:%@”,NSStringFromCGRect(currFrame))
所有这些值都有
CGFloat
类型,但您试图将它们打印为
int
s。只需将
%d
替换为
%f


p.S.苹果开发人员必须偶尔打印
CGRect
S,因此他们想出了一些简便的方法。请尝试
NSLog(@“currFrame维度:%@”,NSStringFromCGRect(currFrame))
,因为您使用的是
%d
,因此将数字格式化为整数。尝试改用
%f
%lf

NSLog(@"  currFrame dimensions:x/y/height/width = %f / %f / %f / %f", 0, currVertPos, expectedLabelSize.height, maxWidth);

因为您使用的是
%d
,因此将数字格式化为整数。尝试改用
%f
%lf

NSLog(@"  currFrame dimensions:x/y/height/width = %f / %f / %f / %f", 0, currVertPos, expectedLabelSize.height, maxWidth);

下面的答案是正确的,但除此之外,您还应该查看方法NSStringFromRect(),以帮助更轻松地打印CGRect。下面的答案是正确的,但您还应该查看方法NSStringFromRect()为了帮助更容易地打印CGRect的字串,您是否可以使用任何格式化程序字符来智能地确定如何根据类型对其进行最佳格式化?i、 e.简化一点Roh-我刚试过使用%f,但它不起作用-将以下行作为输出“currFrame维度:x/y/height/width=0.000000/0.000000/0.000000/0.000000”您是否考虑过这些值实际上可能是0?你确认没有吗?哦-我已经将传入的第一个参数从“0”更改为“0.0”,这似乎已经解决了问题-如果有一个通用格式字符可以用于任何情况,那就好了,例如int或float etcthanks-是否没有可以智能地根据类型确定最佳格式的格式化程序字符?i、 e.简化一点Roh-我刚试过使用%f,但它不起作用-将以下行作为输出“currFrame维度:x/y/height/width=0.000000/0.000000/0.000000/0.000000”您是否考虑过这些值实际上可能是0?你确认没有吗?哦,我已经将传入的第一个参数从“0”更改为“0.0”,这似乎已经解决了问题-如果有一个通用格式字符可以用于任何情况,例如int或float等,那就好了
NSLog(@"  currFrame dimensions:x/y/height/width = %f / %f / %f / %f", 0, currVertPos, expectedLabelSize.height, maxWidth);