#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编辑过]
----------------解决方案--------------------------------------------------------
以下是引用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!?
#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);
}
}
这样就好了
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------