2013-10-07 77 views
1

我已經宣佈了一些變量,布爾和我希望C++會知道,當我做了一些布爾除了做什麼,但它沒有發生,我想它的方式。我如何才能使其工作。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代數?」 - 是的。 –

+0

@MitchWheat謝謝。 :P – Amatya

+1

了'bool'應該是'真'或'FALSE',但sinse你使用它,如果它是一個數字,它會表現就像一個'int'或者一個'char'。在任何情況下,賦值爲'2'將使其值爲'2',沒有任何東西將其裁剪爲只有1個有效位。 – Havenard

回答

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

本聲明將自動提升xj以增加他們之前鍵入int。然後分配轉換回以通常的方式bool0變得false,但其他任何號碼,包括2,成爲true

你可以得到Z_2除了使用^(XOR)運算符代替:

x = x^j; 
1

C/C++提供一系列的位運算符:&|^~,其一般工作在布爾值,因爲真正轉化爲整數1,假爲0

但你也可以使用真正的布爾運算符:

  • &&結合
  • ||脫節
  • !=異或(你認爲作爲補充)
  • !