0

私は C にはかなり慣れていません。Web 開発のバックグラウンドを持っているので、C プログラマーが使用しているビットとバイトのコーディングのいくつかについて少し確信が持てません。関数にパラメーターを渡す C コードを見ています。

insert_chem(int jobId, ...);

そして、この関数が呼び出されると、渡される jobId は実際には定数であり、最初は次のように定義されています。

CYCLE_JOB_MEM = 0x00020000

次のように使用されます。

insert_chem(CYCLE_JOB_MEM, ...);

これは、同じ最初のパラメーターと一緒に渡すことができることがわかりました。

#define DETAILS 0x80000000

このような:

insert_chem(CYCLE_JOB_MEM|DETAILS, ...);

ここで正確に何が起こっているのですか?このコードはかなり古いですが、C は今でもこのような手法を使用していますか? 誰かがいくつかのキーワードと簡単な説明を提供してくれれば、私はこれについて研究を続けることができます.

単純なことですみません!

アップデート:

これらは 16 進数値のように見えますが、複数の値はどのように渡されますか? 関数が入力されると、それらは分割されますか? そもそも複数のパラメーターを渡さないのはなぜですか?

4

3 に答える 3

1

これは、多くの場合「ビットマスク」または「ビットフラグ」と呼ばれる、複数のものに対して 1 つのパラメーターを使用する古典的な方法です。ここで重要なのは、コンピューターで数値がどのように表現されるか、および演算子「または」( |) を理解することです。

数値がコンピューターに格納される方法と or 演算子のしくみを理解していれば、あとは簡単です。

複数のパラメータを使用しないのはなぜですか? まあ、2 つだけなら大した問題ではないかもしれませんが、16 の異なるオプションがあるとしたらどうでしょうか。

于 2012-12-20T22:16:03.773 に答える