Вывод программы на языке си
При выполнении следующей программы на языке Си при вводе: b , выводом программы будет: 0 . Такой вывод получается при вводе любого символа, отличного от цифры. Хотя по идее должен выводится код символа ascii. Или я что-то не понимаю, объясните, как символ сохраняется в типе переменной int?
#include <stdio.h>
int main() {
int t;
scanf("%d",&t);
printf("%d",t);
}
Ответы (1 шт):
Функция 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. - не должен. Читайте инструкции.