C語言,為什麼最後結果是7呢。。我看不出來

時間 2021-08-11 17:39:55

1樓:祥

define 是原樣替換的 遇到f(x)就替換程x*x 也是說 k=f(1+2)/f(2+1)替換後為1+2*1+2/2+1*2+1=7,所以是7 不要人為加括號!

2樓:豆小筆

k=f(1+2)/f(2+1);

f(1+2)中x為1+2

f(2+1)中x為2+1

#define f(x) x*x這為替換,你把對應的x替換數字就出來了

f(1+2) 1+2*1+2

f(2+1) 2+1*2+1

f(1+2)/f(2+1);

1+2*1+2/2+1*2+1

這是赤裸裸的替換,f(3)不等於f(1+2)有點類似與字串的型別

3樓:匿名使用者

define的語句只會替換。

如果你上面所寫。

k=f(1+2)/f(2+1),編譯的時候會替換成k=1+2*1+2/2+1*2+1;這樣就等於7;

你如果要讓他正確執行。你應該這樣define;

#define f(x) (x)*(x)

這樣就不會出錯了。

4樓:

如果不加括號,表示式就會被,因此上面會被成k=1+2*1+2/2+1*2+1,因此是7,所以要注意定義巨集的時候要給變數加括號

5樓:匿名使用者

你定義f(x) 為x * x, 你的k=f(1+2)/f(2+1), 相當於x=1+2,但是x * x並沒有用括號所以變成了

1+2*1+2/2+1*2+1=7,系統不會自動幫你識別並加括號。

6樓:

用x*x把f(1+2)/f(2+1)是:k = 1+2*1+2/2+1*2+1 ;算算是多少就ok了

7樓:

f(x)是帶引數的巨集,只做簡單的替換,不自動進行算術運算。

8樓:匿名使用者

int main()

看看這就知道了。巨集定義記得加括號,得小心用。

圖中的c語言程式的輸出結果為什麼會是7呢?

9樓:魯步凝珍

ascii的0和'0'不是一回事

10樓:可靠的雲朵

0就是\0,即指標p沒指向字串的末端就一直迴圈後移,最後p指向了\0,s還是初始位置,那麼兩者的差就是字元的個數。

c語言以下程式的輸出結果是a為什麼

輸出結果是字元z 位元組是20是因為 10 定義了你為x資料組準備了10個位子,沒個位子可以存放乙個資料 佔2節 10 2 20 位元組 printf c 由於沒有輸出列表所以c編譯器不知道是列印哪個變數裡的值 他產生的當然是個隨機數.假定int型別變數占用兩個位元組,其有定義 int x 10 則...

C語言中,結果為什麼是0呢。我以為是4呢,我看不出來。。謝謝,幫解決一下

union體是看最後一次存進去的資料,與裡面具體的那個變數無關的。變數a的最後一次賦值是0,所以結果也是0。 include int main void union myunu int k a a.u.x 4 a.u.y 5 a.u.z 6 a.k 0 printf d n sizeof a pri...

C語言問題執行結果是多少為什麼求詳細解答

結果15 之所以容易被理解錯誤是由於運算子優先順序的問題解決此類問題,第一步,巨集 k 10 min i,j 即k 10 i j i j 第二步,根據運算子優先順序 結合性判斷 原式等效於 k 10 i j i j 二目運算子 優先順序高於三目運算子?第三步,代入值,判斷計算100 15顯然不成立,...