このサイトでこの解決策 (元の問題を含む) が見つかるまで、私は K&R 問題 7-8 の解決策に頭を悩ませようとし続けました。答えについてコメントすることはできません (おそらく年齢のため)。その質問に実際に入力できる唯一の方法は、回答を投稿することですが、これは不適切だと感じました。だから私は、このポイントに到達するまで(関数をマクロとして実装することに関して)、論理的に思えた選択された「答え」に基づいて、この非常に関連性の高い質問を作成することにしました:
「それをマクロとして非常に頻繁に繰り返すと、ビットマスキングのサイズが固定されるため、「スペースの節約」が急速にコストになります。」
唯一の問題は、関数呼び出しにも時間がかかることです。関数の場所に「ジャンプ」し、ローカル変数用にストレージを確保し、実際に比較を計算するには、すべて時間がかかります。
では、文字の ASCII 値をテストするマクロの実装は、(これを念頭に置いて) table-lookup を組み込んだ最初の関数よりも正確にどのように実行されるのでしょうか?
2 つの整数を比較するよりも、関数呼び出しにかかる時間が短くなる可能性があるのはなぜですか。そのうちの 1 つは既にメモリ内にあり、もう 1 つは定数です。関数とマクロを繰り返し呼び出すと、時間の経過とともにマクロが高速になるように思えます。
私の考え方は間違っていますか?元の質問では取り上げられていなかったので、そうでなければならないと思います。
誰かがこれに光を当ててくれたらうれしいです。