2014-12-04 74 views

回答

2

i=m*m實際上是計算爲

10 + 2 * 10 + 2

這是

10 + 20 + 2 = 32

#include<stdio.h> 
#define m 10+2 
int main() 
    { 
    int i; 
    i=(m)*(m);  \\this will provide you with output as (10+2)*(10+2) 
    printf("%d",i); 
    return 0; 
    } 
+0

我在下面的代碼中有關於宏功能的另一個疑問。 – RAMD 2014-12-04 19:09:26

+1

錯誤的解決方案。總是把括號放在宏定義中,所以你不必在調用時考慮它。 – 2014-12-04 19:14:51

+0

嗯..實際上Aasmund已經給出了這個解決方案,所以我去了一個備用的解決方案,以明確使用括號來執行多行操作。 – 3Demon 2014-12-04 19:18:56

5

宏展開不聽從周圍的語法,所以i=m*m被擴展到i=10+2*10+2,而不是i=(10+2)*(10+2)。這究竟是爲什麼每個人都應該加上括號宏定義和參數:

#define m (10+2) 
相關問題