Из K & R C
A.6.5 Арифметические преобразования Многие операторы вызывают преобразования и выдают типы результатов аналогичным образом .Эффект состоит в том, чтобы привести операнды в общий тип, который также является типом результата.Этот шаблон называется обычными арифметическими преобразованиями.
В приведенном ниже коде EOF определено как -1, что является целочисленной константой со знаком, затем следует преобразовать ch в int, и, в конце концов, цикл должен быть завершен, но неКажется, не случилось!Отсюда Qn.
int main()
{
unsigned char ch;
FILE* fp;
fp = fopen("myfile.txt","r");
while((ch=getc(fp)) != EOF)
{
printf("%c", ch);
}
fclose(fp);
return 0;
}