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陣列問題!!請高手解答!!謝謝
主要的思想就是有兩個第乙個是因為之前的序列是已經排列好的所以只需要比較後確定位置,然後將這個位置的原有的數字後移一位,然後插入新的數字。第二種方法是先插入新的資料然後利用冒泡法排序。第一種方法的 如下 using system using system.collections.generic usi...
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...
問一道C語言的問題。請高手解答,一道C語言的簡單問題求高手解答,求字串中不同字母個數
首先while k 這裡,括號 來里的是自 k的返回值,在k的前 bai面是先k減掉 du1再返回結果,因此執行zhi到這裡k為4,括號中的值為dao4,大於0應該是true,所以需要執行迴圈裡的內容。下面是printf這個函式,首先要先計算出printf的引數的值,也就是k 3的值,那麼這個表示式...