输出结果为:
20
因为已有定义#define r 16
所以,
编译如下的p函数:
void p(int a)
{
printf("%x",a);
}
即是以16进制输出a的值。
现调用p(32);就是要输出十进制32,也就是16进制的20
结果是20.
#define r 16 宏定义了r 为16
#if r ==16 如果r等于16
void p(int a)
{
printf("%x",a); 那么函数p就是以16进制输出整数a
}
#else
void p(int a)
{
printf("%d",a); 否则函数p就是以10进制输出整数a
}
#endif
因为r等于16,所以main函数调用p(32)是以16进制输出32,即20
是 20. %X是十六进制表示。执行这段
void p(int a)
{
printf("%x",a);
}
32的十六进制是20
#define r 16//定义r=16
#ifr==16//如果r=16
void p(int a)
{
printf("%x",a);//输出
}
#else//否则
void p(int a)
{
printf("%d",a);//输出
}
#endif
是条件编译。很适合调试的时候这么写。
现在已经定义r为16(#define r 16),那么编译器会学则上面那个函数 即:
void p(int a)
{
printf("%x",a);
}
%x,%d我倒忘了 是十进制和16进制的选择?
如果#define r 15,那么就编译下面那段了。
嘻嘻