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;

此语句会在添加它们之前自动提升xj键入。然后赋值以通常的方式int转换回:变为,但任何其他数字(包括 2)变为。bool0falsetrue

您可以改为使用^(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 回答