Вы звоните putchar()
с double
в качестве аргумента. Он будет неявным образом приведен к типу int
, и затем этот символ будет выведен. Вы получаете сердце, потому что по какой-то причине у вашего набора символов есть сердце как номер 3. Если вы запустите его и наберете еще несколько символов до EOF
, вы получите другой символ. На моей машине твоя программа не имеет сердца, но если я наберу больше символов, я смогу получить все, что захочу, на следующей строке. 3-й символ ASCII - ETX
, конец текста, так что я не знаю, почему в вашем случае вы получили суть - вы используете какой-то странный язык или набор символов? Что эта программа выводит на ваш компьютер:
#include <stdio.h>
int main(int argc, char *argv[])
{
putchar(3);
putchar('\n');
return 0;
}
Edit:
Вы получаете сердце, потому что это то, что находится в вашем наборе символов в позиции 3. Из wikipedia :
В кодовой странице 437, исходном наборе символов IBM PC, значение 3 (шестнадцатеричное 03) представляет символ сердца. Это значение используется совместно с непечатным управляющим символом ETX, который переопределяет его во многих контекстах.