Символ преобразования для типов элементов typedef?

avatar
user12787203
9 августа 2021 в 06:06
53
0
1

Скажем, у меня есть следующая программа:

#include <stdio.h>

typedef unsigned int el_type;

int main(void)
{
  el_type n;

  scanf("%d", &n);
  printf("%d\n", n);

  return 0;
}

Есть ли символ преобразования, который я могу использовать вместо %d в этой ситуации, чтобы напечатать n?

Источник
Retired Ninja
9 августа 2021 в 06:11
2

%u вместо unsigned int. en.cppreference.com/w/c/io/fscanf en.cppreference.com/w/c/io/fprintf

rici
9 августа 2021 в 06:16
4

typedef не создает новый тип. Все, что он делает, это определяет псевдоним. После ``typedef unsigned int el_type, el_type` и unsigned int неразличимы.

Ian Abbott
9 августа 2021 в 10:33
2

Вы можете определить макросы #define PRI_el_type "u" и #define SCN_el_type "u", а затем использовать scanf("%" SCN_el_type, &n); и printf("%" PRI_el_type "\n", n);, аналогично использованию макросов, определенных #include <inttypes.h>.

Ответы (0)