【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19603

if文と&の関係について
投稿者---はっぴー(2005/01/27 23:50:16)


興味本位でC言語の勉強を始めたのですが、イマイチわからなかったので
こちらに書き込みさせていただきました。
内容は
IF( BIT1 & BIT2 ){

}

と言うものなのですが、あらかじめBIT1とBIT2は
#define BIT1 0x80
#define BIT2 0x10
と定義されておりました。
この時のif文の条件はどういう意味なのでしょうか?
BIT1とBIT2を&したものが0でなければと言う意味でしょうか?

非常に簡単な質問なのかもしれませんが、よく理解したいので、
どなたか解説していただけると助かります。
みなさま、何卒アドバイスよろしくお願いいたします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:if文と&の関係について 19606 OZ 2005/01/28 00:03:20
<子記事> Re:if文と&の関係について 19608 ナナシー 2005/01/28 00:05:39
<子記事> Re:if文と&の関係について 19609 RAPT 2005/01/28 00:06:55


No.19606

Re:if文と&の関係について
投稿者---OZ(2005/01/28 00:03:20)


if( BIT1 & BIT2 ){

if( 0x80 & 0x10 ){

if(0){

となってifの次のブロックは常に実行されません。
最適化によってブロックそのものが消えるでしょう。



この投稿にコメントする

削除パスワード

No.19608

Re:if文と&の関係について
投稿者---ナナシー(2005/01/28 00:05:39)


&はビット演算子です。そのほかにも|などがあります。
&は16進数を2進数に置き換えてから、それぞれのビットについて和を
とります。その辺は勉強する必要があると思います。

つまり、このif文は結果が必ず存在するので、if文内の処理をします。
お試しください。



この投稿にコメントする

削除パスワード

No.19610

Re:if文と&の関係について
投稿者---RAPT(2005/01/28 00:11:13)


&は16進数を2進数に置き換えてから、それぞれのビットについて和をとります。
違います。&(and)は論理積で、|(or)が論理和です。 そのため、(0x80 & 0x10) == 0 となり、この条件式は偽となります。



この投稿にコメントする

削除パスワード

No.19611

Re:if文と&の関係について
投稿者---ナナシー(2005/01/28 00:13:54)


論理和と「和」と表現してしまいました。
確かに内容が違いので、訂正します。


この投稿にコメントする

削除パスワード

No.19613

Re:if文と&の関係について
投稿者---はっぴー(2005/01/28 00:22:28)


皆様、早速の解答ありがとうございます。
論理和・論理積のところはHPのほうを見てなんとなくわかっていたのですが、if文の条件をどう判断しているのかわかりませんでした。
これで大丈夫になります。
ありがとうございました。


この投稿にコメントする

削除パスワード

No.19616

Re:if文と&の関係について
投稿者---REE(2005/01/28 10:23:20)


>論理和と「和」と表現してしまいました。
>確かに内容が違いので、訂正します。

そう言うレベルじゃなくて &は論理です。



この投稿にコメントする

削除パスワード

No.19609

Re:if文と&の関係について
投稿者---RAPT(2005/01/28 00:06:55)


& は「論理演算子」または「ビット演算子」といいます。
次のサイトを参照してください。
初心者のためのポイント学習C言語 - 複雑な演算子

また、if文は条件式の評価結果が0以外のとき真となるので、そのビット演算式
の評価結果が0か、0以外か、を判定する事になります。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧