私は K&R を読んでいる初心者のプログラマーであり、この本は多くの予備知識を前提としているように感じます。私を混乱させる 1 つの側面は、メモリ内の変数の実際の表現、または存在と言うべきかということです。データ型は変数に対して正確に何を指定しますか? この質問の言い方がよくわかりません...でも、いくつか質問してみると、誰かが首尾一貫した答えをくれるかもしれません。
getchar() を使用する場合、「int」はより多くの値を保持できるのに対し、「char」は 256 個の値しか保持できないため、「char」型よりも「int」型を使用する方がよいと言われました。EOF 値を保持するために変数が必要になる場合があるため、256 文字以上が必要になるか、EOF 値が 256 文字の 1 つと重複します。私の考えでは、これは穴の空いた箱の集まりだと思います。誰かが私により良い表現を与えることができますか? これらの「ボックス」にはインデックス番号がありますか? EOF が 256 の使用可能な値の値と重複する場合、重複する値を予測できますか?
また、これは、char c = 'a' のように変数に手動で値を代入する場合にのみ、データ型「char」を使用しても問題ないということですか?文字?
また、「char」と「int」の実際の重要な違いは何ですか? 「char」タイプの代わりに「int」タイプを使用できる場合、特定の時間に一方を他方よりも優先して使用することに決めたのはなぜですか? 「メモリ」を節約するためですか(「メモリ」が正確にどのように機能するかは実際にはわからないため、引用符を使用します)。
最後に、char 型の 256 個の使用可能な値を正確に取得するにはどうすればよいでしょうか? モジュロ 2^n (n = 8) について読んだことがありますが、なぜそれが機能するのでしょうか (バイナリと関係がありますか?)。「モジュロ 2^n」のモジュロ部分とはどういう意味ですか (モジュロ演算に関連する場合、関係がわかりません...)?