c語言巨集定義計算問題,C語言巨集定義計算問題

2021-08-25 12:10:32 字數 961 閱讀 2607

1樓:樂跑小子

i=f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28如果#define f(x) (x*x)

i=f(4+4)/f(2+2)=(4+4)*(4+4)/(2+2)*(2+2)=64

#define f(x) x*x

i=(f(4+4))/(f(2+2));

這樣i=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3

想到達到效果要這樣寫:

#define f(x) ((x)*(x))i=(f(4+4))/(f(2+2));

這樣i= ((4+4)*(4+4))/((2+2)*(2+2))=4

2樓:

i=f(4+4)/(2+2);

這裡要注意,在編譯的時候,編譯成目標檔案時實際是這樣的:

i=f(8)/4;

也因為這個特點,在定義巨集的時候可以這樣寫:

#define _k 1024

#define _m (1024*_k)

#define _g (1024*_m)

這樣寫,不會讓處理器多做乘法運算,而是編譯器幫忙幹完了這個活

3樓:xiafan**

答案是21

因為你定義的f(x) x*x ,而你下面的i=f(4+4)/(2+2)中是講4+4作為x的值,所以的時候是這樣的, i=4+4*4+4 /(2+2),所以結果是 i=4+16+1 ,當然是21了

c語言的巨集定義問題

c語言define巨集定義的常量計算?

4樓:周大個子

7z=x+1*x/2=5+5/2=5+2=7

巨集定義就是直接代入,沒有括號的

5樓:花開芒夏

z=5+1*5/2=7

關於c語言巨集定義輸出,關於C語言巨集定義輸出

巨集定義就是字串代替,先把整個東西代替進去 a s i s i z s i a a s i 這是三目運算子,從左到右。先是 a s i 這裡是 a s 1 b 成立 接下來是 s i z 這裡是 s 2 c z 也成立 所以是,s i a a 這裡其實就是小寫轉大寫 這裡是,s 3 d a a 結果...

C語言巨集定義意思

巨集定義是c語言提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯。巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集 將巨集名替換為字串。掌握 巨集 概念的關...

C語言define巨集定義的常量計算

7z x 1 x 2 5 5 2 5 2 7 巨集定義就是直接代入,沒有括號的 z 5 1 5 2 7 c語言中常量定義和巨集定義有什麼區別?區別大了個去了.巨集定義是預處理命令.defien a 3 執行後,前處理器把會正文所有全字匹配的a,全部替換為3,那麼,最後的 進入編譯器的 1 a,是變成...