2

我认为这是一个相对简单的问题,但我并不确切知道发生了什么。

我有一个尝试使用 NSString 的 stringWithFormat 构建字符串的方法

它看起来像这样:

NSString *line1 = [NSString stringWithFormat:@"the car is %d miles away", self.ma];

在上面的行中“self.ma”应该是一个int,但在我的例子中,我犯了一个错误,“self.ma”实际上指向一个NSString。

所以,我知道该行应该是

NSString *line1 = [NSString stringWithFormat:@"the car is %@ miles away", self.ma];

但我的问题是第一个示例中的 %d 对我的 NSString 做了什么?

如果我使用调试器,我可以看到在一次情况下,“self.ma”等于“32444”,但不知何故 %d 将其转换为 1255296。

我猜想 32444 => 1255296 的转换是某种类型的基数转换(十六进制到十进制之类的),但情况似乎并非如此。

知道 %d 对我的字符串做了什么吗?

TIA

4

1 回答 1

4

你实际上是给它一个指向 NSString 的指针,所以当格式字符串需要一个整数时,它会将给定的字节解释为一个 int。给出的是 NSString 在内存中的地址,因此字符串的内存地址被打印出来。

于 2010-05-05T02:41:26.413 回答