所以我寫了一個簡單的程序,試圖獲得#define
宏的更基本的理解,我想知道這兩個程序之間的區別是什麼,是否有任何根本原因使用第三個程序? :簡單的C預處理器替換
#include<stdio.h>
#define x 7
int main()
{
int i;
i = x * x * x;
printf("%d", i);
return 0;
}
該程序,因爲7 * 7 * 7 = 343
#include<stdio.h>
#define x 5+2
int main()
{
int i;
i = x * x * x;
printf("%d", i);
return 0;
}
該程序打印出27從操作順序打印出343。 編輯 辦法,迫使第二個打印出343,我們可以加上括號,所以我們可以做到以下幾點:
#include<stdio.h>
#define x (5+2)
int main()
{
int i;
i = x * x * x;
printf("%d", i);
return 0;
}
會不會有任何理由做這種,而不是第一呢?
嚴格地講,它只是一個字符串替換。 – 2015-02-23 21:09:58