1樓:
在c語言中巨集定義只是簡單的替換s=s(a+b)=10*a+b*a+b=10*10+20*10+20=320
2樓:杜茂彥
s=s(a+b); == s= 10 * a+b * a+b = 10 *10+20*10+20 = 100+200+20 = 320;
應該定義s(r) 為 #define s(r) 10* (r) * (r)
3樓:匿名使用者
#define s(r) 10*r*r
這裡改成
#define s(r) 10*(r)*(r)因為巨集不是函式,他只是簡單的做了乙個替換的工作.比如你寫的s(a+b);
就被替換成 10*a+b*a+b
所以一般寫巨集的時候,都會把變數(就是你這裡面的r)用小括號括起來,這樣就不會有這樣出乎意料的運算了.
4樓:匿名使用者
因為define是簡單的替換
s=s(a+b);就等於s=10*a+b*a+b;
**應該改為:
#define s(r) 10*r*r
main()
5樓:
你用的巨集定義,這個s=s(a+b);程式是這樣執行的:s=10*a+b*a+b;所以結果是320,而不是9000,。用巨集最好加括號,如#define s(r) 10*(r)*(r),這樣結果就是9000了,當然我建議還是少用巨集定義,有的時候會發生意想不到的錯誤。
這裡完全可以用乙個內聯函式代替。
關於 c語言乙個簡單例題!
關於c語言邏輯運算子一道簡單的題目!
6樓:夏碧夢
這是邏輯運算子的短路判斷造成的!
由於邏輯運算子||和&&實現判斷左值的,顯然如果根據左值就能夠判斷整個表示式真假的話,那剩下的就不用判斷了!目前的c編譯就是這樣處理的!
對於邏輯或||,左值為真,整個表示式就為真;
對於邏輯與&&,左值為假,整個表示式就為假!
++x||++y&&++z中先執行邏輯或||左邊的++x後x=1,左值為真,後面的自然就不用處理了!
7樓:匿名使用者
這個是c語言的優化造成的。
按照c語言對邏輯或運算優化計算的規定,當邏輯或的左運算分量滿足時,不再計算邏輯或的右運算分量,而直接得到邏輯或運算的結果。由於邏輯或的右運算分量不曾計算過,所以變數y,z的值也不為變化。
8樓:伊·梵
就是這樣算的
邏輯運算子從左至右還確保其運算元的計算。 但是,它們計算必要的運算元的最小數目確定表示式的結果。 這稱為 「短路計算」。
題目18:用c語言設計乙個簡單的計算器,
用c語言計算簡單的數學題
9樓:匿名使用者
#include
int main()
printf(「%f」,s);
}解釋一du下:
t是分zhi母,每次dao乘以2
k是控制+和
回-的,每次乘以-1可以加減答交替。
關於c語言的乙個很簡單的練習題!
10樓:匿名使用者
scanf("%d,&a"); 寫錯了
scanf("%d",&a);
C語言的乙個計算題,c語言這題怎麼計算?
這個問題是乙個運算子優先順序的問題!題目中的優先順序 最高,依次是 所以上一題首先求解的是 第乙個 求解 z y為真,所以結果是1,用它的結果和x比較,1 2,所以括號內的結果是0 第二個 求解 y z為真,結果為1 第三個 求解 x y 2 4 6 第四個 求解 y z 2 所以得到的結果是!0 ...
關於C語言的簡單問題,乙個關於C語言的簡單問題
p fopen e string.txt w 是以只寫方式開啟e盤下的string.txt檔案,如果檔案不存在則建立乙個新檔案,如果存在,則檔案內的資料會丟失 也就是會被你將要寫入的資料覆蓋 開啟檔案成功則返回的是檔案指標,如果不成功返回0 if null p fopen e string.txt ...
關於C語言的簡單問題,乙個關於C語言的簡單問題
int fun char p,char q for i 0 p 0 i p應小寫,fun函式的比較方法也不對,你這樣只能比較開始字母一樣的 int fun char p char q 兩個引數中間少了乙個逗號 for i 0 p 0 i 這個大寫p應該為小寫p 你的fun函式不是那麼回事啊。我幫你重...