为什么NSLog显示不正确的int和char?

时间:2012-11-27 05:22:35

标签: objective-c nslog

我认为我正在做的一切正确,但NSLog输出与悬停在变量上显示的正确值不匹配。合成和点符号正常工作 将鼠标悬停在所有变量上会显示正确的值,如//注释中所示。但是,在调试器控制台中,NSlog显示不正确;输出也显示在//注释中。

在测试中,屏幕类的实例:

{   int i;
    char j;
}

在AppDelegate中:

test.i = 10;    // hover shows 10        OK
test.j = 'z';   // hover shows 122 'z'   OK
NSLog(@"i= %i, j= %c"),test.i, test.j;// hover shows 10,122 'z'OK  
but Debugger Console shows  i= 2097168, j= $  


int k = 10; // hover shows 10        OK
char l = 'z';   // hover shows 122 'z'   OK
NSLog(@"k= %i, l= %c"),k, l;          // hover shows 10,122 'z'OK  
but Debugger Console shows  k= 6055, l= ,

我错过了什么?或者这是Xcode 3.2.4,OSX 10.6中的真正错误?

1 个答案:

答案 0 :(得分:5)

在传递格式参数之前,您已关闭NSlog()的括号。改变这个:

NSLog(@"i= %i, j= %c"),test.i, test.j;

到此:

NSLog(@"i= %i, j= %c",test.i, test.j);

除了在函数调用中分隔参数外,逗号还可用于分隔语句。您的尝试相当于:

NSLog(@"i= %i, j= %c"); // An NSLog with no args, will print garbage.
test.i; // A valid, though pointless, statement.
test.j; // A valid, though pointless, statement.