Это потому, что ввод 65
рассматривается как два разных символьных ввода, и программа печатает их последовательно.
Когда вы ввели 6
, программа мгновенно читает его и проверяет, что это не EOF
, поэтому выводит его на консоль. Затем, когда вы ввели 5
, он снова принимает его в качестве ввода. Поскольку это также не EOF
, ваша программа снова печатает его.
Итак, вы вводите два символа, и эта программа правильно выводит их на консоль, как и положено. Кроме этого, нет никакой дискриминации. Целочисленный эквивалент a
равен 65, поэтому он напечатает 65, если вы напечатаете символ, подобный этому -
char c = 'a';
printf("%d", c); // will print 65
и это напечатает a
-
int i = 65;
printf("%c", i); // will print a