1

いくつかの変数をブール値として宣言しました。ブール値の加算を行ったときに C++ が何をすべきかを知っていることを望んでいましたが、思い通りに進んでいません。どうすればそれを機能させることができますか。

#include<iostream>

using namespace std;

int main()
{
bool x,j;
x=0;
j=1;
for(int i=0;i<10;i++)
{
cout << x;
x=x+j;
}
return 0;
}

私は次のように出力を得ています

011111111

私は得ることを望んでいたのに対し

0101010101

ブール変数が 2 で変更されることを期待していました。

x=1 then
x+1 = 0
x+1+1=1
x+1+1+1=0

等々。

ブール代数と底 2 代数を混同していませんか?

ありがとう

4

2 に答える 2

4
bool x,j;
x=x+j;

xこのステートメントは、 andを追加する前jに入力することを自動的にプロモートします。int次に、代入boolは通常の方法で に変換されます:は に0なりますfalseが、2 を含むその他の数値は になりtrueます。

^代わりに (xor) 演算子を使用して Z_2 加算を取得できます。

x = x^j;
于 2013-10-07T01:48:17.793 に答える
2

C/C++ は、さまざまなビット演算子を提供します: &|^~。これは、true が整数 1 に変換され、false が 0 に変換されるため、通常はブール値で機能します。

ただし、実際のブール演算子も使用できます。

  • && 結合
  • || 選言
  • != 排他的または(追加とみなすもの)
  • ! いいえ
于 2013-10-07T01:52:10.207 に答える