1.define是在幹嘛?
例如:#define RuLai 16,就是說之後的RuLai都會被16代替。這並不是說RuLai是一個變數,而是編譯器會先把所有文字RuLai用文字16取代,然後才編譯。
2.為什麼一定要用1,2,4,8,16...?
一個char由8個bit組成:
(以下為'A'的資料,ASCII碼中'A'為65,轉換為二進位是01000001)bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
value(0或1) | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
因為在二進位中,這些數值剛好代表某個bits。
參考下表:十進位 | 二進位 |
1 | 00000001 |
2 | 00000010 |
4 | 00000100 |
8 | 00001000 |
16 | 00100000 |
32 | 00100000 |
64 | 01000000 |
128 | 10000000 |
所以可以利用一些位元運算子去判斷char的某個bit是否為0或是1
3.預設都不會武功為什麼是這樣寫?(char skills='\0')
'\0'代表的是十進位值0,也就是二進位值00000000
4.為什麼學會吸星大法是skills|SiSing?不懂
為什麼檢查是否學會吸星大法是 skills & SiSing?不懂
& | 是位元運算(和 && || 不同)意義如下:因此:(以下為舉例)
欲判斷是否學到該武功:skills= | 00101101 | |
SiSing= | 00001000 | |
skills & SiSing= | 00001000 | |
可利用&來判斷某個bit是否被設定 ※在C/C++中,if(a),只要a不為0都會被判斷為true而執行if內的程式碼
|
欲設定學到武功:skills= | 01000000 | |
SiSing= | 00001000 | |
skills & SiSing= | 01001000 | |
可利用|來設定某個bit而不會影響到其它bit的狀態
|
留言列表