Iphone 字符串中带有整数值的浮点格式变量

Iphone 字符串中带有整数值的浮点格式变量,iphone,objective-c,Iphone,Objective C,我面临一个小问题,我想知道:为什么 这里我们有一些字符串: [NSString stringWithFormat@"%.3f/%.3f/%.3f/%i", 1.0, 1.0, 1, 1]; 在本例中,结果为1.000/1.000/1/abra-kadabra,类似于34875689。 为什么会这样?当然,我知道,当我们将第三个值改为1.0时,一切都会好起来。 所以,请给我解释一下这次行动的深层次过程 由于您编写了%f,编译器需要一个浮点,但可以识别一个int。写入1而不是1.0会告诉编译器它是

我面临一个小问题,我想知道:为什么

这里我们有一些字符串:

[NSString stringWithFormat@"%.3f/%.3f/%.3f/%i", 1.0, 1.0, 1, 1];
在本例中,结果为1.000/1.000/1/abra-kadabra,类似于34875689。 为什么会这样?当然,我知道,当我们将第三个值改为1.0时,一切都会好起来。
所以,请给我解释一下这次行动的深层次过程

由于您编写了
%f
,编译器需要一个
浮点
,但可以识别一个
int
。写入
1
而不是
1.0
会告诉编译器它是一个整数常量,而不是
1.0
,后者是一个浮点常量。

是。一切都是正确的。但是,我想知道,在这种情况下,为什么它会对第四个值产生不良影响+1好的,我假设编译器将这4个值紧挨着存储,而不存储有关其类型的信息。因此,当在运行时填充格式字符串时,只需要使用格式指示符及其相应的字节数来填充它们。由于整数的字节数少于浮点数,因此它会变得混乱,只会从内存中取出一些垃圾来填充指定的浮点数…嗯。这似乎是真的。比亚迪:这很难说。