2014年11月4日 星期二

[C] #define 原來很神奇

在C 語言中前置處理器(Preprocessor)有一個#define命令,可以用來取代字串

以下程式輸出的結果為7,-1 , WTF ~_~ ,Tell me why?




原來#define 是以字串的角度,所以今天我寫  square(z + 1) 時,其實代進去時,式子會變成 z+1 * z+1  也就是 3+1  * 3 + 1    ,我們再寫清楚一點,其實它就相當於是 3+(1*3)+1 所以答案就變成 3+3+1 =7 囉。 同理 square(z-1) 代入後變成 3 -1 * 3 - 1  也就是 
3-(1*3)-1   =-7 囉 ,切記切記。

沒有留言:

張貼留言