NSLog(@“%d”,a)NSLog(@“%g”,a); @“%d”与@“%g”之间的差异

时间:2011-03-08 18:44:45

标签: objective-c-2.0

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    NSLog(@"Hello, World!");
    float a = 12.3454323;
    NSLog(@"%d", a);
    NSLog(@"%g", a);
    [pool drain];
    return 0;
}

嗨,我做了一个非常简单的程序来解释我的问题: 该程序的输出是:

第1行:一些随机数(394883904,或89374e-15或......) 2line:12.3454323

所以..我的问题:什么是@“%d”,什么是@“%g”).. 因为,如果a是INTEGER(int a = 156)

然后@“%d”给出156 BUT @“%g”给出8.32059e-315或类似的:))

我正在进行这些值的蓝牙传输,但这是我的问题,发送整数的位置然后显示它,它正在工作,但我必须检查什么是什么,所以,有任何教训关于@“%d”和类似的员工?当使用@“%d”和使用@“%g”时......还有其他@“%something”吗?谢谢

编辑:当然,零线是你好世界! :)

1 个答案:

答案 0 :(得分:14)

%d打印出一个整数,%g打印出一个浮点数或双精度数。如果你给%da float或double,或%g一个整数,你会得到不正确的结果,可能会或多或少不等于*(int *)&floatVar*(double *)&intVar所得到的结果。

字符串格式说明符的完整列表位于the documentation