为什么会这样输出?

ProgrammingRing 2010-07-22 09:41:51
#include <stdio.h>

#define FORMAT "%s! C is cool!\n"

int main(void)
{
printf(FORMAT, FORMAT);
return 0;
}

======输出结果=====
%s! C is cool!
! C is cool! //这里为什么没有输出 %s! 啊?
Press any key to continue

书上说printf(FORMAT, FORMAT);语句等于printf( "%s! C is cool!\n" ,"%s! C is cool!\n"); 可是我不明白为啥第2句没有输出%s!,请解各位解释下。。
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonyi 2010-07-22
  • 打赏
  • 举报
回复
支持5楼
acdbxzyw 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chonet2009 的回复:]

举个简单例子先:
printf( "%s! C is cool!\n" ,"you");输出 you! C is cool! 其中 %s 即对应于 "you"

printf( "%s! C is cool!\n" ,"%s! C is cool!\n");同理,%s对应于"%s! C is cool!\n",即你的疑惑,第二句中的%s已经在前面输出了。
[/Quote]
soga,学习了。。。
blackboycpp 2010-07-22
  • 打赏
  • 举报
回复
#define定义的宏就是简单的字符替换。
liutengfeigo 2010-07-22
  • 打赏
  • 举报
回复
眼睛猥琐男 2010-07-22
  • 打赏
  • 举报
回复
举个简单例子先:
printf( "%s! C is cool!\n" ,"you");输出 you! C is cool! 其中 %s 即对应于 "you"

printf( "%s! C is cool!\n" ,"%s! C is cool!\n");同理,%s对应于"%s! C is cool!\n",即你的疑惑,第二句中的%s已经在前面输出了。

canshui 2010-07-22
  • 打赏
  • 举报
回复
用%s 输出后面的字符串 即 "%s! C is cool!\n" 字符串中有 '\n' ,所以输出时要换行

然后, 把 %s 后面的输出就行了呀 ,也有一个 '\n' 也要换行!
ProgrammingRing 2010-07-22
  • 打赏
  • 举报
回复
它这个不是要输出两行%s! C is cool!吗?为什么第2行只输出了C is cool!呢?还是我想错了?它这个语句是如何输出的?第2行为啥只会输出C is cool!??
localxiao 2010-07-22
  • 打赏
  • 举报
回复
int printf(const char *fmt, ...);
swl82560397pq 2010-07-22
  • 打赏
  • 举报
回复
printf( "%s! C is cool!\n" ,"%s! C is cool!\n"); =
%s用"%s! C is cool!\n代替

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧