1樓:匿名使用者
#define e1 1<<0
#define e2 1
e1+4 // 結果是16
e2+4 // 結果是5
至於是bug還是故意如此,在下就不知道了
2樓:金色潛鳥
巨集定義#define eot 1 << 0是規定在預編譯時,把 下面程式中 遇到的 詞 eot 用 字串 1 << 0 替代。
所以 不能 換成版 字元 1。
例如:權
#define eot 1 << 0
int x=1;
x = x + eot + 2;
printf("%#x ", x);
和#define eot 1
int x=1;
x = x + eot + 2;
printf("%#x ", x);
得到的結果 不同。前者 0x8, 後者 0x4--------
除非你已看過整個程式,你能確認 用 1 << 0 替代 和 用 1 替代 結果 一樣。
在c語言中 巨集定義是什麼?
3樓:雪人晒太陽
在c語言源程式中,允許用一個識別符號來表示一個字串,稱為巨集,巨集定義是由源程式中的巨集定義命令完成的,巨集替換是由預處理程式自動完成的。巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括:巨集定義、檔案包含、條件編譯。
4樓:仁昌居士
c語言中的巨集定義用法分為兩種。
1、不帶引數的巨集定義比較簡單,就是用一個指定的識別符號來代表一個字串。它的一般形式為「#define 識別符號 字串」,例如#define e 2.718281828459。
這種方法使使用者能以一個簡單的名字代替一個長的字串。
2、帶引數的巨集定義不是僅僅進行簡單的字串替換,還要進行引數替換。其定義的一般形式為;「#define 識別符號(巨集名)(參數列) 字串」,字串中包含在括號中所指定的引數。例如#define s(a,b) a*b area=s(3.
2)。
c語言的巨集定義 if ,c語言的巨集定義 if defined
說的簡單一點就是一個判斷語句,判斷 if defined ifndef 後面的語句是否有 沒有 被巨集定義過,如果條件為真就執行其間的語句,否則就不管它。沒有說得那麼繁瑣.因為對於一個大程式而言,我們可能要定義很多常量 不管是放在原始檔還是標頭檔案 那麼我們有時考慮定義某個常量時,我們就必須返回檢查...
在C語言學習中什麼叫巨集定義,在C語言中巨集是什麼意思?
巨集定義是高階語言編譯器提供的常用語法,其目的是利用某一識別符號標識某個文字字串。在編寫程式時,如果程式中反覆地使用某個資料或某段程式片段,就可以考慮將這個資料或程式片段定義為巨集,然後每個出現該資料或程式片段的地方用巨集名替代,這樣做的好處是程式簡潔,可讀性好,而且當需要修改這些相同的程式片段時,...
解釋下C語言巨集定義的一道題,C語言的巨集定義問題
這裡主要是兩個語法。一是在define語句裡,x 的意思是,替換為一個以x為內容的字元專串。比如 如果 屬你呼叫 print 10 那麼 x 就等於是寫 10 這樣的。第二個語法是,在c語言裡,連續寫兩個字串 不需要任何操作符連結 就等於把它們連線起來。比如 the no.is 就跟寫 the no...