NSLog (@ "% d", а) NSLog (@ "% g", а); разница между @ "% d" и @ "% g" - PullRequest
7 голосов
/ 08 марта 2011
#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 или ...) 2 строки:12.3454323

так что .. мой вопрос: что такое @ "% d" и что такое @ "% g") .. потому что если IF a INTEGER (int a = 156)

тогда@ "% d" дает 156 НО @ "% g" дает 8.32059e-315 или аналогичный:)

я делаю передачу этих значений через bluetooth, но это моя проблема, чтобы отправлять позиции с целым числоми затем, чтобы показать это, это работает, но я должен проверить, что к чему, так есть ли урок о @ "% d" и подобных сотрудниках?когда использовать @ "% d" и когда использовать @ "% g" .. и есть ли другие @ "% что-то"?спасибо

edit: конечно, нулевая строка - это привет мир!:)

1 Ответ

14 голосов
/ 08 марта 2011

%d выводит целое число, %g выводит число с плавающей запятой или двойное число. Если вы дадите% d число с плавающей запятой или двойное число или% g целое число, вы получите неверные результаты, которые могут быть, а могут и не быть более или менее эквивалентными тому, что вы получили бы с *(int *)&floatVar или *(double *)&intVar.

Полный список спецификаторов форматирования строки приведен в документации .

...