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顯然不成立,...