C言語の記述について

お世話になっております。いいよぉです。素人的な質問となりますが、下記わかればご教示ください。

 

条件式Aと条件式Bとの積を通常「&&」で取っていますが、不意に記述ミスで「&」で記述している部分があったのですが、

ABの条件を4通りふって検証したところ、問題なく判定されておりました。

 

if((条件文A)&(条件文B))・・・・は、 if((条件文A)&&(条件文B)) と同じ判定になりました。

 

・記述する条件分によって、同じ意味を持つのでしょうか。

・できるケースとできないケースとがありますでしょうか。

・コンパイラによって、正式な&&へ修正されているのでしょうか。

以上、宜しくお願い致します。

Parents
  • if((条件文A)&&(条件文B))

    ここでポイントとなるのが、「条件文」の所です。
    「条件文」と言う事は、「0」か「非0」が入っていると言う事ではないか。
    「非0」がコンパイラの内部処理によって 0x01 0xFF のどちらであっても
    (条件文A) && (条件文B) と (条件文A) & (条件文B) は同じになりますね。
  • リカルド さん

    返信遅れました、適切な回答ありがとうございました。

    条件式は、例えると
    if( ((A & 0x03) == 0x03)&(B != C) )
    という式でした。

    マイコンは78K0Rに実装しております。
    前側の結果(1or0)と後側の結果(1or0)との論理積を取っていて、結果が同じになっているのだと考えております。
Reply
  • リカルド さん

    返信遅れました、適切な回答ありがとうございました。

    条件式は、例えると
    if( ((A & 0x03) == 0x03)&(B != C) )
    という式でした。

    マイコンは78K0Rに実装しております。
    前側の結果(1or0)と後側の結果(1or0)との論理積を取っていて、結果が同じになっているのだと考えております。
Children
No Data