2016-04-09 14 views
0

次の命令のように、c言語の関数パラメータ内の等価演算子(==)の意味は何ですか?関数パラメータ内の等価演算子(==)

bind_transaction(proc、thread、& tr、cmd == BC_REPLY);

+0

と同等です! – Cert

+0

* C言語の演算子*は*式*で使用されます。それで全部です。関数の引数として使用される式と他の場所で使用される式(例えば戻り値)との間には全く違いはありません。文脈にかかわらず、それは単なる表現である。 "関数の引数"と "戻り値"の区別を確立しようとする試みは、全く根本的なものではありません。区別はありません。 – AnT

+0

@Cert:答えは、それが重複しているという事実によって与えられる: '=='演算子をどこに適用するかに違いがないので、引数として渡された点は無関係です。あなたが知る必要があるのは '=='が返すものだけです。 – MicroVirus

答えて

4

cmd == BC_REPLYは、関数binder_transactionの引数として、基本的には関数に渡される値がintです。これは私が関数の引数ではない戻り値に「==」について知りたい

int b = (cmd == BC_REPL);    // Will return either 0 or 1 
binder_transaction(proc, thread, &tr, b); 
+0

if(cmd == BC_REPLY) bind_transaction(proc、thread、&tr、True); (cmd!= BC_REPLY) bind_transaction(proc、thread、&tr、False); ?? – Cert

+1

はい、このダブルチェック版は同等ですが、はるかに冗長です。 –

+1

C言語の比較演算子は 'bool'値を生成しません。 Cの '=='の結果は常に 'int'です。 @AnT; – AnT

関連する問題