1樓:
#define是巨集替換,執行之前是先替換,然後執行的#define x 5
#define y x+1
#define z y*x/2
main( )
z換成y*x/2=x+1*x/2=5+1*5/2=5+2=7輸出7,6
2樓:驀然回首時
z = y*x/2 = x+1*x/2 = 5+1*5/2 = 7
a = y = x+1 = 5+1 = 6
記住一點,巨集定義只是單純的替換,所以y*x/2 = x+1*x/2 != (x+1)*x/2
3樓:匿名使用者
printf第二個z被替換為x+1*x/2,x是5,所以值為7,而a=6,所以輸出為:
z=7,a=6
4樓:匿名使用者
z = y*x/2 = x+1*x/2 = 5+1*5/2 = 5 + 2 = 7
a = y; a = x + 1 = 6;
注意:1.如果之前有了巨集定義,那麼在預處理的時候,只是進行簡單的替換。
在這裡 y 被替換為 x+1;其實在巨集定義的時候,很容易影響到後面的計算順序,一個好的習慣就是在巨集定義的時候加上(),比如 這裡 如果 #define y (x+1) 那麼 z的值就是 (x+1)*x/2;
2.printf("z=%d\n",z); 這裡z 是整形,因此在計算 1*5/2 的時候,計算的結果會捨去小數部分,1*5/2 的結果為 2.
5樓:匿名使用者
應該是 z=7,a=6
C求高手解答謝謝,請高手解答c語言問題,謝謝!
employee char name 10 char address 20 char city 20 char youbian 6 name 10 abc address 20 abc city 10 abc youbian 6 000000 cout 初始化完成 建構函式用初始化連結串列應在類內,...
c語言問題求高手解答,C語言問題求高手解答
幫你寫好了,這裡幫你編譯執行了,沒任何問題,不放心的話你自己試試struct staff int main void if head null puts 沒有任何資料,抱歉!else current head while current null current head while current...
c語言習題請高手幫忙解答,C語言習題請高手幫忙解答。
1 沒答案,應該是a2,b 5 2 a3 沒答案,因為 u輸出a的值不確定4 a5 c 6 b7 沒答案,應該是scanf f c 8 c9 b 1 沒答案如為printf a d,b d n a,b 選 d a d,b d 2 b3 c 4 c5 c 6 d7 a 我想答案應該是scanf f c...