これは、K&R の本から直接引用したものです。
の優先順位は の優先順位
!=
よりも高くなります。つまり=
、括弧がない場合!=
、代入の前に関係テストが実行され=
ます。だから声明はc = getchar() != EOF
と同等です
c = (getchar() != EOF)
これは、getchar の呼び出しがファイルの終わりを返したかどうかに応じて、c を 0 または 1 に設定するという望ましくない効果があります。(これについては、第 2 章で詳しく説明します。)
演習 1-6。
getchar() != EOF
式が 0 または 1であることを確認します。
この演習を行う方法と、ブロック引用された段落で何が起こっているのかを理解するのに苦労しています.
EOF は int 型の記号定数であり、通常は値 -1 を保持することを知っています。負の値の int は、比較を行うときに char と同じ値を保持することはできないため、 int に昇格する必要があります。これにより、何らかの形でファイルの終わりが通知されます。
また、上記で指定された括弧がないと!=
、割り当ての前に比較が行われることもわかりますが、これは実際にはどういう意味ですか? その機能に何が起こるのですか?また、EOF の値を出力しましたが、それは -1 でした。0 または 1 であることを確認するという演習の意味は何ですか?