- 締切済み
論理演算の問題です
koko_u_の回答
- koko_u_
- ベストアンサー率18% (459/2509)
>A・Bはなぜ0になるんですか? 存在しないということですか? 偽ということ。
関連するQ&A
- エクセルの論理演算について
A,Bが等しいかどうかの場合、A=B 真なら1 偽なら0 を返す AよりもBが大きいかどうか、 A<B 真なら1 偽なら0 を返す では質問ですが、A,Bが等しくないならば..はどのように記述するのでしょうか。A<>B, A><B, A.ne.B(←これはフォートラン) 今、必要なのは文字列の不一致なのですが。 また、1つ驚いたのですが、A>Bの比較の場合、A,Bのどちらかに数値としての大小比較できないもの(空白の文字、カンマなど)があると驚いたことに1を返すようです。論理演算の対象ではないと判断したら1を返すというのは確か基本なのかも知れませんが、常識からはかなり逸脱しています。ある行が無効となっており数値のところに全角のカンマみたいなものがあり、これを使って当然ゼロと評価すべきところを1と評価して集計してしまうということがありました。 エクセルは複雑に集計するような場合、相当習熟していないと大変大きな失敗を犯すことがあるようです。 以上、よろしくお願いします。
- 締切済み
- オフィス系ソフト
- 論理学の問題なのですが
この問題のときかたを教えてください。 論理式が真か偽か、偶然的かを判定して真式にはA,偽式にはB、偶然式にはCを。 (1) ~pVq⊃q (2) ~(pVq)≡(p&q) (3) (p⊃q)V(~q⊃~p) (4) ~(p&q⊃(~p⊃q)) (5) (~pVq)&(q⊃r)⊃(p⊃r)
- 締切済み
- 数学・算数
- 論理演算子について
◎1----------------------------- int main(void) { int a=10,b=20; while(1){ if(a= =12 && b= =25){ break; } ++a; ++b; } return 0; } -------------------------------- ◎2------------------------------------------------------- #include<stdio.h> #include<ctype.h> int main(void) { char ss[256]="10%%'%shin(no((100!w**a'16&'shi&%$#n~|=~de)&64"; int dt,i=0; printf("右の文字列には言葉が隠れています: "); printf("%s\n",ss); puts(""); printf("1を入力すると言葉が分かります: "); scanf("%d",&dt); puts(""); while(dt!=1 && ss[i] !='\0'){ if( !isalnum(ss[i]) ){ ss[i]=' '; } ++i; } printf("%s\n",ss); puts(""); return 0; } ------------------------------------------------------------ 以上2つのプログラムにおいて疑問があります。 まず◎1のプログラムで、aが12、bが25になるという2つの条件を満たしたら、プログラムを終了させようと思ったのですが、条件を満たしても、ずっとデクリメントし続け終了しません。 「if(a= =12 && b= =25)」の部分を「if(a= =12 || b= =25)」とすれば、aが12になった時点で終了しました。 ◎1では「if(a= =12 && b= =25)」という条件が何故適用されないかという疑問があります。 次に、◎2ではdtが1になり、配列ssに格納されている文字列が、'\0'になるという2つの条件を満たしたら終了させようとしたのですが、1を入力すると、「ss[i]!='\0'」の条件が偽にもかかわらず、while文が一度も実行されませんでした。 そこで、1以外を入力すると、while文は実行されましたが、dtの条件が真になる事はないのに、ちゃんと終了しました。 プログラム◎1、◎2について何故こうのようになってしまうのか、教えていただければ嬉しいです。
- ベストアンサー
- C・C++・C#
- 論理演算について
Cを勉強中の者です。論理演算についてよくわからいことがあります。 以下のソースコードを実行し結果が真なら0001、偽なら0000が出力されるプログラムを作りました。 #include <stdio.h> int main(void) { unsigned short a = 0x1234; unsigned short b = 0xfafc; unsigned short c = 0xcdef; unsigned short x, y; x = a && b; y = b && c; printf("x=%04x\n", x); printf("y=%04x\n", y); return 0; } 結果はx=0001, y=0001となります。y=0001はbとcの文字列がそれぞれfとcをを持っているので演算による結果は納得できますが、x=0001はaとbの文字列には共通するものがないのになぜx=0000ではないのでしょうか? また0xが頭に付く表現は16進数だと強調するためにあるのですか? 説明に不足があればまた足しますのでよろしくお願いします。
- ベストアンサー
- C・C++・C#
- 「命題AとBには論理積の関係がある」←正しい言い方
命題Aと命題Bについて次の4つの関係が成り立つ時、 A∧B→真 A∧¬B→偽 ¬A∧B→偽 ¬A∧¬B→偽 下記の言い方は合ってますか? 1.「AとBには論理積の関係がある」 2.「AとBの論理積は真であり、AとBの否定論理積は偽である」 より適切なものがあれば教えて下さい。
- ベストアンサー
- 数学・算数