很奇怪 - %i 不适用于整数,%d 可以吗?

Posted

技术标签:

【中文标题】很奇怪 - %i 不适用于整数,%d 可以吗?【英文标题】:Very strange - %i didn't work for integer, %d did? 【发布时间】:2012-04-06 17:49:56 【问题描述】:

当我在调试我的应用程序时看到这个很奇怪。

int iTag = btnTemp.tag;    //btnTemp.tag = 1
NSString *strFriendID = [NSString stringWithFormat:@"%i",iTag];  

给我 strFriendID 作为空字符串。

int iTag = btnTemp.tag;       //btnTemp.tag = 1
NSString *strFriendID = [NSString stringWithFormat:@"%d",iTag];

给了我 strFriendID1

怎么会这样?

【问题讨论】:

很奇怪,你能用[NSString stringWithFormat:@"[%d|%i]",iTag,iTag]验证一下——那是什么结果? (注意两者的用法,首先是“工作”,然后是 zomg-I-was-triked 警卫。) 我在我的应用程序中检查了它。它工作正常。%d 和 %i 都给了我 1... 正是卡兰。不知道为什么。 我怀疑是否有答案!这真的很奇怪! 【参考方案1】:

我不知道你为什么得到这个答案,但是当我读到你的问题时,我在我的项目中尝试过,但我得到了价值

UIButton *btnTemp = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
btnTemp.tag = 1;
int iTag = btnTemp.tag;    //btnTemp.tag = 1
NSString *strFriendID = [NSString stringWithFormat:@"%i",iTag];  
NSLog(@"Str %@", strFriendID);
NSString *strFriendID1 = [NSString stringWithFormat:@"%d",iTag];  
NSLog(@"Str %@", strFriendID1);

输出

2012-03-26 10:32:02.899 Leaves[506:f803] Str 1
2012-03-26 10:32:02.901 Leaves[506:f803] Str 1

两个都给我 1

【讨论】:

【参考方案2】:

根据Apple:

 %d, %D and %i all represent Signed 32-bit integers.

是的,%i 没有工作很奇怪,但 %d 工作并不奇怪。

也许当时 btnTemp.tag 为空

【讨论】:

这更像是一个评论而不是一个答案,你只是在输入作者的想法。 好吧,我会发表评论,但我的代表还不够高:p

以上是关于很奇怪 - %i 不适用于整数,%d 可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

变量不适用于 .animate() 中的 scrollTop 值

相机 API 适用于 Jelly Bean 但不适用于 Kitkat

php curl 适用于 cli 但不适用于 apache

共享回调不适用于 Facebook SDK 4 Android

Python整数在循环中表现得很奇怪

素数分解程序不适用于某些输入