在編碼中,有時候要求當前的一個bool變量是true,但是隨后要對他取反成false。一般我們用
bool ans=flag?false:true;
這樣的語句來實現。但是今天我想到了一個更加好的辦法,請看代碼和測試:
代碼:
int b=-1; printf("%d\n",~b); if(b) puts("b is true"); b=0; if(~b) puts("~b is true");
測試結果:
我們用int類型代替bool進行邏輯判斷,計算機的數據用補碼表示,int的-1就是0xFFFFFFFF,用取反符號~進行取反之后,變成了0x0 。
而-1會被識別為true,0會被識別為false 。
至此,我們實現了用取反符號對true和false進行交替。