2015-08-16 127 views
-2

下面的代碼片段的輸出是什麼?我們可以在c中的#define指令中聲明一個變量嗎?

#include<stdio.h> 
#define MUL(A,B) int t; t=A*B; 
void main() 
{ 
    int A=10,B=12; 
    printf("%d", MUL(A,B)); 
} 

將輸出是一個錯誤(如聲明不允許)或給定的數字將相乘???

是否允許在#define預處理器指令中聲明?

+2

您是先測試一下自己嗎?並回答,它會導致一個錯誤。你所需要的只是'#定義MUL(A,B)A * B' – somtingwong

回答

0

編譯器會將您的printf("%d", MUL(A,B))替換爲printf("%d", int t; t=A*B)。這將導致錯誤類型名稱不允許,因爲您在printf函數中通過int typename。
是的,你可以聲明使用#define變量:

#include<stdio.h> 

#define MUL(A,B) int t; t=A*B; 

void main() 
{ 
    int A=10, B=12; 
    MUL(A,B); 
    printf("%d", t); 
} 

它不會導致錯誤。在MUL(A,B)之後,您將可以訪問t變量。
但以這種方式聲明變量對理解和調試來說確實很複雜。躲開它。

相關問題