私には質問があります!オペレーター。論理演算子!整数値の場合
私は整数の変数、元に適用する場合:
int i=7;
!i;
return i;
機能は、[OK]を、私に7を与えます。 このコードをコンパイルする前に、私は248(否定演算子は00000111から11111000に)返されることがほぼ確実でした。 (私はgccを使用しています)。
なぜ間違っていますか?忍耐をありがとう!
私には質問があります!オペレーター。論理演算子!整数値の場合
私は整数の変数、元に適用する場合:
int i=7;
!i;
return i;
機能は、[OK]を、私に7を与えます。 このコードをコンパイルする前に、私は248(否定演算子は00000111から11111000に)返されることがほぼ確実でした。 (私はgccを使用しています)。
なぜ間違っていますか?忍耐をありがとう!
論理演算では整数値7がtrueです。逆にすると0になり、falseを意味します。
操作の結果を保存しません。演算子は結果を返しますが、元の変数は更新されません。結果を変数に代入する必要があります。 !
は~
と同じではありません。前者は論理not演算子であり、後者はbitwise negate演算子です。後者はあなたが必要とするものです。
したがってi = ~i
またはreturn ~i
は、あなたが意図した通りに行動します。
'〜i'はビット単位で32ビットを行います。私は 'i^0xff'がより良い提案になると思います。 –
@AjayBrahmakshatriya正しい数の 'ffff'を入力すると、これらの2つは同等です。 – Lundin
はい、OPは248から7を予想します。したがって、0xffは適切でしょうか?そして '〜' –
また、 '!'はビット単位ではなく論理否定であり、int型は符号なし8ビット量ではありません。 – user2357112