看板 Programming 關於我們 聯絡資訊
看資料結構的書的時候,應該是用c寫的吧 發現code裡出現 !! 這個符號 煩請解惑感激不盡~ 節錄部份code: BinQueue Merge(BinQueue H1, BinQueue H2) { Bintree T1, T2, Carry=Null; int i j; if(H1->CurrentSize +H2->CurrentSize >Capacity) error("Merge would exceed capacity"); H1->CurrentSize += H2->CurrentSize; for(i=0, j=1; j<= H2->CurrentSize; i++, j*=2) } T1=H1->TheTrees[i];T2=H2->TheTrees[i]; switch( !!T1 + 2 * !! T2 + 4 * !! Carry) { case 0: /*no trees*/ case 1: /*only H1*/ break; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.2.1
Barros:因為google過了也找不到 只好來這裡發問了 219.84.2.1 03/08 21:12
tropical72:是長得像這樣嗎?int a=5; if(!!a).. 123.195.165.40 03/08 21:13
tropical72:簡單的說,a是非0的話,!!a會傳回1;否則 123.195.165.40 03/08 21:14
tropical72:傳回0。 123.195.165.40 03/08 21:14
※ 編輯: Barros 來自: 219.84.2.1 (03/08 21:29)
s66449:加了兩個not 不就等同互相抵消了?? 114.27.187.150 03/08 22:13
s66449:有加和沒加是一樣的? 114.27.187.150 03/08 22:13
tropical72:不同唷,a=1,b=5而言 : 123.195.165.40 03/08 22:19
tropical72:a+=b; --> a+=5 ---> a=6; 123.195.165.40 03/08 22:20
tropical72:a+=!!b ---> a+=!(!5)-->a+=!0-->a+=1 123.195.165.40 03/08 22:20
tropical72:--> a=2; 123.195.165.40 03/08 22:20
tropical72:(T1!=0)|((T2!=0)<<1)|((C!=0)<<2) 123.195.165.40 03/08 22:26
Barros:了解了,謝謝 219.84.58.43 03/08 22:47
MOONRAKER:真是神祕。 61.231.8.206 03/09 08:46
yauhh:一個!將整數變成布爾值,但邏輯意思是反的, 180.206.52.95 03/09 18:42
yauhh:再加!就回來了. 180.206.52.95 03/09 18:43
yauhh:他做二件事,一是將整數對應為0,1,二是將0,1 218.160.108.73 03/09 21:56
yauhh:(true,false)反過來當作數字來用. 但例子中 218.160.108.73 03/09 21:57
yauhh:看起來作法好怪,邏輯運算當數字運算用,數字 218.160.108.73 03/09 21:57
yauhh:運算卻當位元運算用. 218.160.108.73 03/09 21:58