当前位置: 代码迷 >> C语言 >> #define程序结果输出?(已解决)
  详细解决方案

#define程序结果输出?(已解决)

热度:201   发布时间:2007-10-29 12:18:26.0
#define程序结果输出?(已解决)
#define pr(a) printf("%d\t",(int)(a))
#define print(a) pr(a);printf("ok!)
main()
{
int i,a=1;
for(i=0;i<3;i++)
print(a+i);
}
输出:1 2 3 ok!
不明白,为什么只输出一个OK!?

[此贴子已经被作者于2007-11-1 20:27:16编辑过]

搜索更多相关的解决方案: define  输出  结果  int  

----------------解决方案--------------------------------------------------------
以下是引用yqiong在2007-10-29 12:18:26的发言:
#define pr(a) printf("%d\t",(int)(a))
#define print(a) pr(a);printf("ok!)
main()
{
int i,a=1;
for(i=0;i<3;i++)
print(a+i);
}
输出:1 2 3 ok!
不明白,为什么只输出一个OK!?

上述程序相当于:
void main()
{
int i,a=1;
for(i=0;i<3;i++)
printf("%d\t",(int)(a+i));
printf("ok!);
}
为什么只输出一个ok这回明白了吧!
注意:define的作用只是纯粹的字符串替换。

----------------解决方案--------------------------------------------------------

printf("ok!)少了一分号````应该是printf("ok!")``


pr(a)------------>printf("%d\t",(int)(a))

print(a)--------->printf("%d\t",(int)(a));printf("ok!)

所以
for(i=0;i<3;i++)
print(a+i);就是

for(i=0;i<3;i++)
printf("%d\t",(int)(a));printf("ok!);

看不动的时候```可以一步步慢慢替换``





----------------解决方案--------------------------------------------------------
#define
就看作简单的字符串替换.
----------------解决方案--------------------------------------------------------

明白了,字符替换是在编译是进行的!


----------------解决方案--------------------------------------------------------
学习
----------------解决方案--------------------------------------------------------
#define pr(a) printf("%d\t",(int)(a))
#define print(a) pr(a);printf("ok!")
main()
{
int i,a=1;
for(i=0;i<3;i++)
{
print(a+i);
}
}


这样就好了
----------------解决方案--------------------------------------------------------


----------------解决方案--------------------------------------------------------
  相关解决方案