В чем разница между символами формата% PRId и% d? - PullRequest
0 голосов
/ 19 января 2019

Рассмотрим следующий код:

#include <stdio.h>
#include <inttypes.h>

void main(void)
{
    int32_t a = 44;

    fprintf(stdout, "%d\n", a);
    fprintf(stdout, "%"PRId32"\n", a);
}

Когда лучше использовать %d, а когда лучше "%"PRId32? Чем отличаются оба этих символа формата? Это как-то связано с тем, как int32_t typedeffed на вашем оборудовании / машине?

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Тип int должен иметь не менее 16 бит представления значения, хотя на большинстве настольных компьютеров и компиляторов он будет иметь 32 бита. Таким образом, int может в целом совпадать с int16_t, int32_t, int64_t или ни с чем из вышеперечисленного.

Используйте "%d" для переменных типа int и "%" PRId32 для переменных типа int32_t.

0 голосов
/ 19 января 2019

Используйте %d для int и PRId32 для int32_t.

Возможно, на вашей платформе int32_t - это просто определение типа для int, но это не совсем так. Использование неправильного спецификатора вызывает неопределенное поведение, и его следует избегать.

Как указывает @EricPostpischil, обратите внимание, что %d используется внутри строки формата в кавычках, а PRId32 используется снаружи. Причина этого в том, что PRId32 - это макрос, который расширяется до строкового литерала и затем объединяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...