在objective-c中使用带有NSLog()的变量的有趣输出
以下代码:在objective-c中使用带有NSLog()的变量的有趣输出,objective-c,variables,double,nslog,arithmetic-expressions,Objective C,Variables,Double,Nslog,Arithmetic Expressions,以下代码: int N = 100; double total_time = 100; double dt = total_time/N; NSLog(@"Answer: %d", dt); 给出了一个有趣的输出:5766而不是1 仅在添加 NSLog(@"Answer: %f", dt); 输出正确答案。但是,我希望输出“double”值而不是“float”。我的期望值和语法有什么问题?%d的意思是“整数的十进制表示”,而不是“双精度” 您总是使用%f输出一个双精度值,因为NSLog()有
int N = 100;
double total_time = 100;
double dt = total_time/N;
NSLog(@"Answer: %d", dt);
给出了一个有趣的输出:5766而不是1
仅在添加
NSLog(@"Answer: %f", dt);
输出正确答案。但是,我希望输出“double”值而不是“float”。我的期望值和语法有什么问题?%d
的意思是“整数的十进制表示”,而不是“双精度”
您总是使用
%f
输出一个双精度值,因为NSLog()
有一个打开的参数列表。在这种情况下,所有浮点数都作为双精度数传递。因此,您应该将%f
理解为“浮点数”,而不是浮点数%d和%i是相同的东西,都是十进制整数格式 现在,我明白了。但为什么选择“5766”的值?5766不是任意选择的值,而是字节在解释为有符号32位整数时所表示的值,这是指定%d的操作。如果尝试使用Objective-C,您应该已经知道基本C,你应该知道的一件事是简单的printf
格式方案(以及整数和浮点值之间的差异)。你的意思是如果我不太了解基本C,我就不应该问关于Objective-C的问题吗?你如何定义什么是基本的,什么不是?对我来说,有些问题看起来很基本,而对其他问题则不然。如果你不知道,例如,如何使用printf
打印浮点值,这是一个很好的迹象,表明你对C不够熟悉,还没有开始学习Objective-C。