6

私はこれにちょっと困惑しています。C++ の ~ 演算子は別の方法で動作するはずだと思っていました (Matlab-y ではありません)。最小限の作業例を次に示します。

#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
    bool banana = true;
    bool peach = false;
    cout << banana << ~banana << endl;
    cout << peach << ~peach << endl;
}

そして、ここに私の出力があります:

1-2
0-1

誰かがこれについて何らかの洞察を持っていることを願っています。

4

2 に答える 2

10

これはまさに起こるべきことです: ゼロのバイナリ表現を反転すると、負の 1 になります。1 のバイナリ表現を反転すると、2 の補数表現で負の 2 が得られます。

00000000 --> ~ --> 11111111 // This is -1
00000001 --> ~ --> 11111110 // This is -2

で開始してもbool、演算子によって、整数昇格の規則によって~値が に昇格されることに注意してください。aを aintに反転する必要がある場合は、の代わりにoperator を使用します。boolbool!~

于 2014-02-24T00:21:35.907 に答える
0

~ はビットごとの NOT 演算子であり、すべてのビットを反転することを意味します。ブール値の NOT の場合、! を使用する必要があります。オペレーター

于 2014-02-24T00:22:48.690 に答える