Вывод программы на языке си

При выполнении следующей программы на языке Си при вводе: b , выводом программы будет: 0 . Такой вывод получается при вводе любого символа, отличного от цифры. Хотя по идее должен выводится код символа ascii. Или я что-то не понимаю, объясните, как символ сохраняется в типе переменной int?

#include <stdio.h>

int main() {
    int t;
    scanf("%d",&t);
    printf("%d",t);
}

Ответы (1 шт):

Автор решения: AlexGlebe

Функция scanf в строковых аргументах содержит идентификатор типа %d как тип int. Этот аргумент нужен, так как введённое выражение можно понимать по разному : как букву, строку или число. И функция возвращает значение, которое означает количество распознатых объектов.
Чтобы распознать введённое выражение можно последовательно вызывать чтение разных типов, можно сначала как число, а если произошла неудача, то как буква.

# include <stdio.h>

int main() {
    int t;
    if (  scanf ( "%d"  , & t ) != 1 ) {
      char c ;
      if (  scanf ( "%c"  , & c ) != 1 ) {
        printf("ни буква ни число\n");
      } else
        printf("буква = '%c'\n",c);
    } else
      printf("число = %d\n",t);
}

Хотя по идее должен выводится код символа ascii. - не должен. Читайте инструкции.

→ Ссылка