Подтвердить что ты не робот

Разница между stdint.h и inttypes.h

В чем разница между stdint.h и inttypes.h?

Если ни один из них не используется, uint64_t не распознается, но с любым из них он является определенным типом.

4b9b3361

Ответ 1

См. статью wikipedia для inttypes.h.

Используйте stdint.h для минимального набора определений; используйте inttypes.h, если вам также нужна переносная поддержка для них в printf, scanf и др.

Ответ 2

stdint.h

Включение этого файла - это "минимальное требование", если вы хотите работать с целыми типами с указанной шириной C99 (т.е. "int32_t", "uint16_t" и т.д.). Если вы включите этот файл, вы получите определения этих типов, чтобы вы могли использовать эти типы в объявлениях переменных и функций и выполнять операции с этими типами данных.

inttypes.h

Если вы включите этот файл, вы получите все, что stdint.h предоставляет (поскольку inttypes.h включает stdint.h), но вы также получите средства для выполнения printf и scanf (и "fprintf", "fscanf" и т.д.) с этими типами переносимым способом. Например, вы получите макрос "PRIu16", чтобы вы могли напечатать целое число uint16_t следующим образом:

#include <stdio.h>
#include <inttypes.h>
int main (int argc, char *argv[]) {

    // Only requires stdint.h to compile:
    uint16_t myvar = 65535;

    // Requires inttypes.h to compile:
    printf("myvar=%" PRIu16 "\n", myvar);  
}