2015-08-16 172 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变量。
但以这种方式声明变量对理解和调试来说确实很复杂。躲开它。

相关问题