在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。