下列程序的结果是:
#include <stdio.h>
#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);
printf("\n");
}
123ok!
123ok!
1 2 3 ok!
1 2 3 ok!
注意分号!PRINT(a) PR(a);printf("ok!")
1 2 3
1 2 3 ok
1
2 “ok!”3 “ok!”4 “ok!”
1 ok!2 ok!3 ok!
1 ok 2 ok 3 ok
moonya 回复 moonya: 123ok
若定义为#define PRINT(a) {PR(a);printf("ok!");}
则输出
1 ok!2 ok!3 ok!
1 ok2 ok3 ok
useryang 回复 useryang: 1 2 3 ok!
1 ok!2 ok! 3ok!
有没有兄弟解释一下,不是说替换字符串吗?难道还要看;号?后面不需要的话怎么又输出了ok
daa 回复 zzw1803472614: 因为for函数只有在只执行一条语句时不加花括号,因此参与for循环的只有一条输出数字的语句,没有输出OK的语句,OK在for循环结束以后输出
结果为:1  ...
用户登录可进行刷题及查看答案
结果为:1 2 3 ok!
登录后提交答案