1樓:匿名使用者
你的定義裡應該是
#define y (x+1)
否則就成了
5+1*5/2
再取整就是7
這個define一般是定義常數用的,定義全域性變數直接用int y=x+1就行
2樓:潘達
define是定義一個巨集,巨集的意思就是用一串字元來代替令一串字元,只是簡單的替換。。。。你可以把z
z由y*x/2替換掉,y由x+1替換程式設計,x+1*x/2 x由5替換,5+1*5/2=7。。。。
預編譯指令時不進行編譯的,只是個預處理define就是定義一個巨集,巨集的原理已經說過了,之所以叫預編譯就是在編譯之前進行的,他做的事就是把巨集還原,比如z的位置就由5+1*5/2替換掉了,顯然這是個常數運算連一個變數都沒有。。。。
3樓:匿名使用者
預編譯時,以已經得到 x為5,y為 x + 1,z為 5 + 1 * 5 / 2 = 5 + 2 = 7。注意,巨集是一種代換,並不會進行任何計算。
4樓:
5 1*5/2自己替換下巨集的內容就可以看到了,一般巨集需要加()避免優先順序帶來的問題
5樓:
#define其實算是**替換(是原樣替換喲!!),意思就是z=x+1*x/2,也就是z=5+1*5/2這時,是不是就是7?因為5/2等於2,5+2當然等於7。
所以在用#define時,一般習慣都加上「()」括號!!這樣才能實現你想要的形式!!
關於一個C語言程式的問題。C語言程式設計問題?
int a 定義一個整型變數a char b 100 定義一個字元陣列b,它有100個元素,每個元素都是char型別。scanf d a 讀取一個整數並儲存到變數a中。d表示讀取整數,若使用 f則表示讀取float型別的數。itoa a,b,2 itoa 是一個函式,把a轉換成2進位制的字串,儲存到...
求c語言編矩陣乘法運算的程式,求一個C語言編矩陣乘法運算的程式
include iostream.h void matrixchain int p,int n,int m,int s int p int m 6 6 s 6 6 int m,s m new int n for i 1 i n i m i new int n s new int n for i 1 ...
求用C語言編寫程式,求用C語言編寫一個程式
5fen.由於分數太少,我就寫一個簡單的,本函式可以擴充套件 吧分給我吧 引數 檔名 返回值 字元數 int count char filename return ret 想學好,最好能自己寫。你可以多看看別人寫的,也好為自己寫打下基礎。用c語言編寫一個程式,求a b的絕對值 的和.include ...