㈠ c語言中宏替換時先求出實參表達式的值,然後再帶入形參中運算求值,對不對啊為什麼啊
不是這樣的,宏替換是在預編譯時將整個宏的表達式進行替換再進行編譯的,舉個例子講如果你定義了如下宏:
#define fun(a) (a*a)
下面用的時候
int main()
{
int i = 5, j = 4;
int k = fun(i+j)
}
那麼在預編譯時首選會先將fun(i+j)替換成 i+j*i+j,即此時計算的時候會先算乘法i*j,那麼k的值最終就是5+4*5+4 = 29,而不是(i+j)*(i+j)=81,當然如果你想實現後一種結果,則宏定義方法應該是下面這樣的
#define fun(a) ((a)*(a))
相互學習,希望對你有幫助,不懂的話,再跟我討論吧
㈡ 關於C語言中內置宏__DATE__和 __TIME__
這兩個就是字元串常量,當字元串用就行。
__DATE__:當前的編譯日期
__TIME__:當前編譯時間;
#include<stdio.h>
#include<string.h>
intmain()
{
printf("%s,%s
",__DATE__,__TIME__);
printf("長度DATE=%d,TIME=%d
",strlen(__DATE__),strlen(__TIME__));
return0;
}