<int である理由>
#include<stdio.h>
main()
{
int c;
c=getchar();
while(c!=EOF) /* cがEOFになるまで繰り返す
*/
{
putchar(c);
c=getchar();
}
} |
問題となるのは、“入力” と “入力の終わり” をどうやって区別するか?ということです。
c言語ではこの問題について、
どんな文字にもなりえない値を終了の合図にすることで解決しています。
この値のことを EOF と呼びます。
この EOF は、どんな文字にもあてはまらない値ですから、このプログラムの変数 c には、
任意の文字を記憶する char と、文字になりえない EOF を、値として記憶できなければなりません。
つまり、char 型だけでは、EOF を記憶する分の大きさが足りないので、
char 型にするのは不可能なのです。
そこで、char より記憶領域が少し大きい int を用いるのです。
ちなみに、EOF の値はコンパイラによって異なるのですが、キーボードから入力するとき、
Windows では Ctrl と Z の同時押し、Unix,Linux では Ctrl と D の同時押しになると思います。
|