-2

私の教授ではなく皆さんに聞いてすみません。(数時間で期限が切れ、彼女は利用できません)しかし、私は正しい方向のポイントを探しています。

私が今夜書いているものの1つは、2つのことを述べています...

Single-character versions of the C logical operators:

& for && (logical AND)
| for || (logical OR)
! for logical NOT

そしてこれは...出力例として。

Enter an expression: (0 & 1) | (1 & 1)
Result: (0 & 1) | (1 & 1) = true

私の疑似ロジックは、「&」または「|」の入力を受け取ることです。'&&'または'||'として返されます 入力した式に基づいてすべてを元に戻し、プログラムに計算を実行させます。

しかし、私が理解していないのは、上記の表現を真に評価するものは何でしょうか?およびまたはfalse?上記の表現についてもっと学ぶために私は何を研究すべきですか?そして、それを真または偽にするものは何ですか?

4

3 に答える 3

2

このようにそれを見てください:

(0 & 1) | (1 & 1)

= (0 and 1) or (1 and 1)

= (false and true) or (true and true)

= (false) or (true)

= true

ウィキペディアでさらに読む

于 2013-03-17T04:54:33.747 に答える
2

Cにおけるtrueとの概念は、 の整数とのゼロ以外の数です。false0falsetrue

&|~などの「単一の」ブール演算子は、ビット^演算子と呼ばれます。

それらは 2 つの数値をビットごとに処理します - それぞれ論理テーブルに従います - AND、OR、ONE-COMPLEMENT(not)、および XOR。

だから、あなたの表現:

(0 & 1) | (1 & 1)0 & 1= 01 & 1=1であり、であるため、 は true0 | 1です1。これは本当です。

これを次のように変えることができるのは、式がそのようなものではなく、falseと組み合わされた場合です:&|

(0 & 1) & (1 & 1)= false.

AND の真理値表:

+---------------+---------+
|  A    +   B   |   A & B |
+---------------+---------+
| 0     |   0   |    0    |
| 0     |   1   |    0    | 
| 1     |   0   |    0    |
| 1     |   1   |    1    |
+---------------+---------+

ORの真理値表:

+---------------+---------+
|  A    +   B   |   A | B |
+---------------+---------+
| 0     |   0   |    0    |
| 0     |   1   |    1    | 
| 1     |   0   |    1    |
| 1     |   1   |    1    |
+---------------+---------+

ただし、C99 以降、trueandfalseは予約語であり、内部的に and に評価されます0-1上記の回答は C99 と C89 に適用されます。

于 2013-03-17T04:56:42.857 に答える
-1

皆様のご意見をお寄せいただきありがとうございます。本当に助かりました。

int logicalCheck (int a, int x, int b) {

// let 88 = true
//  let 89 = false

if (x == '&') {
    if (a == b) {
        return 88;
    }
    if (a != b) {
        return 89;
    }

}

if (x == '|') {
    if ((a == b && a) || b != 0) {
        return 88;
    }
    if (a || b == 0) {
        return 89;
    }

}

return 0;
于 2013-03-17T05:09:56.640 に答える