我是obj-c的新手。如何解决?format 指定类型"int",但参数的类型为"无符号长整型"
int main(int argc, const char * argv[])
{
const char *words[4] = {"aardvark","abacus","allude","zygote"};
int wordCount = 4;
int i;
for(i=0;i<wordCount;i++){
NSLog(@"%s comprises %d chars", words[i], strlen(words[i]));
}
return 0;
}
strlen()
返回一个 size_t
,可以是 32 位或 64 位,具体取决于使用的建筑。
打印size_t
的正确格式是%zu
:
NSLog(@"%s comprises %zu chars", words[i], strlen(words[i]));
见 http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html对于"z"和其他长度修饰符:
- Z
指定以下 [...] 转换说明符应用于size_t
或相应的有符号整数类型参数;
您必须在NSLog
中使用良好的格式(似乎使用与 printf
和 cie 相同的格式):
NSLog(@"%s comprises %zu chars", words[i], strlen(words[i]));
或者你可以投掷strlen
的回归:
NSLog(@"%s comprises %d chars", words[i], (int)strlen(words[i]));