c语言的一些疑问

qq626926200   2012-9-21 15:43 楼主
#define  D  %d
int a=2;
printf("D",a);
我想输出a的值(即2),但是结果输出了D,有什么解决办法吗?
printf把“D”当做字符串了,没有转换成“%d”,怎么转换成%d。

回复评论 (6)

楼主非得用这样的宏定义吗,我反正是第一次看到
点赞  2012-9-21 15:54

回复 楼主 qq626926200 的帖子

楼主这样做有什么实际意义吗?
宏定义本身是在编译时执行的,在这里就是把D替换成%d
D本身就成了一个符号常量
但是“D”被程序解释为字符串,内存中存贮为D和\0两个字节;
字符串常量不是符号常量;
点赞  2012-9-21 17:12

回复 板凳 yaoyong 的帖子

我想把那个输出的格式用宏定义代替,可以搞么
点赞  2012-9-21 21:23

回复 沙发 sint27 的帖子

我也是无意中在书上看到的
点赞  2012-9-21 21:24
如果楼主非要这么做的话,可以这样来:
#define  D  "%d"
int a=2;
printf(D,a);
点赞  2012-9-21 21:43

回复 4楼 qq626926200 的帖子

六楼的办法可以。
点赞  2012-9-21 23:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复