亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
請教 關于C語言宏定義的問題
[打印本頁]
作者:
dzbj
時間:
2020-1-11 14:46
標題:
請教 關于C語言宏定義的問題
比如 在keil中 我定義這樣一個宏
#define a 1+2
調用時
x=a;
問題
運算過程是 x=3 還是 x=1+2
我理解應該是x=1+2 就是說每次調用a都會進行一次1+2的運算
但這兩天看書說 define在編譯時就運算完了 要是按書里的說法理解 每次調用a 應該直接就是3而不進行1+2運算
有點糊涂了 應該是哪個
作者:
1402354830
時間:
2020-1-11 15:11
編譯時就已經運算完了。
作者:
qiuaqiuqiu
時間:
2020-1-11 17:16
我覺得是第二個,宏定義本身是對程序中特殊命令的預處理,經過預處理后程序就不再包括預處理命令了,最后再由編譯程序時——預處理——源程序進行編譯處理,得到可供執行的目標代碼。所以是x直接是3,a還是1+2,但是在預處理中完成的。
作者:
z77889900111
時間:
2020-1-11 17:27
宏定義就是把定義的宏在程序運行時直接替換 在程序編譯的時候a被替換成1+2 所以就變成x=1+2
作者:
tyrl800
時間:
2020-1-11 18:18
就是x=3
作者:
zhai1995
時間:
2020-1-11 19:46
原樣替換 ,你理解應該是對的
作者:
zhai1995
時間:
2020-1-11 19:58
你可以自己 驗證的 , #define a 1+4 然后 x = a/4; 打印看結果多少 就知道是先加等于5 還是原樣替換了。
作者:
yoxi
時間:
2020-1-11 19:58
你這是偷懶!這樣的疑問完全是自己可以在C編程器中去驗證的事!
作者:
dzbj
時間:
2020-1-11 21:29
zhai1995 發表于 2020-1-11 19:58
你可以自己 驗證的 , #define a 1+4 然后 x = a/4; 打印看結果多少 就知道是先加等于5 ...
歐了 你這個方法好 我試試
作者:
dzbj
時間:
2020-1-11 22:09
感謝樓上各位前輩的回復 特別感謝7樓的回復 根據你的建議我驗證了一下 情況如下
第一種
#define a 4+4
uchar x;
x=a/4;
結果 x=5
說明是直接替換
第二種
#define a 4+4
uchar b=a;
uchar x=0;
x=b/4;
x=2;
說明編譯時已經運算過了
我這么表達可能不太準確 就是說直接調用宏定義的東西 就是直接替換 寫什么進去就直接替換成什么 但如果把宏聲明給一個變量 在編譯時會直接把宏的值運算出來給變量
作者:
工具人2000
時間:
2020-1-12 01:23
我覺得應該是x=1+2
作者:
hantu
時間:
2020-1-12 11:31
宏定義在預編譯階段只是查找替換
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1