青云志第九集土豆影音:c语言 宏定义 输出格式 输出项?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 01:17:26
//宏定义 输出格式 输出项?
#include<stdio.h>
#define PR(format,value) printf("value=%format\t",(value))
void main()
{
float x=5.0,x1=3.0,x2=8.0;
char d='f';
PR(d,x);
}

/*****************************************
输出结果是:
******************************************
value=5.000000ormat
怎么会出现这样的结果的?
答案书上说:
不能用这种方法将输出格式和输出项都作为参数。
在宏替换时对字符串中的字符不给以替换

看了,实在是不理解
希望能详细一点,具体要点上,每一个思路,步骤
谢谢
我知道实际上常用的,但是一般不是那么定义的
刚两位给出的回答,调试出来还是和我的结果一样的
还有,我用的是Microsoft Visual C++ 6.0调试的
那个x1=3.0,x2=8.0只是我没记得删而已,因为这段程序是我针对问题从一个比较长的程序中浓缩出来。
我到现在还是不太明白
#define PR(format,value)空格 printf("value=%format\t",(value))

可以用而且 在实际工程中还是比较常用的
但是要注意用括号 否则容易出错

宏替换之后:

void main()
{
float x=5.0,x1=3.0,x2=8.0;
char d='f';
printf("value=%format\t",(x)) ;
}

宏替换之后:

void main()
{
float x=5.0,x1=3.0,x2=8.0;
char d='f';
printf("value=%format\t",(x)) ;
}

我在机子上输出结果是什么都没有,有警告x,x1.x2.d没有使用。不知道提问者是怎么样的。