请教,printf(" "" Hello world "" ") 为什么可以正常执行?连续两个双引号C语言是如何处理的?

common_man 2011-09-20 10:15:00
各位达人,昨天发现一段代码中宏展开后得到如下的代码:

printf(" "" Hello world "" ") ;

其中连续出现的双引号让我有点迷糊,直接在代码里面写上上面的语句也的确能正常编译运行输出,请问是怎么回事?

谢谢
...全文
1238 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
common_man 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sinservice 的回复:]
引用 8 楼 common_man 的回复:

引用 5 楼 sinservice 的回复:
我没看清题目,呵呵。

连续写两个常量字符串,等于连接起来。


多谢回复!这是是C99引入的新规矩吗?还是一直以来都可以的?


貌似不新,我在很古老的编译器上都这么用过
[/Quote]

多谢!
「已注销」 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 common_man 的回复:]

引用 5 楼 sinservice 的回复:
我没看清题目,呵呵。

连续写两个常量字符串,等于连接起来。


多谢回复!这是是C99引入的新规矩吗?还是一直以来都可以的?
[/Quote]

貌似不新,我在很古老的编译器上都这么用过
common_man 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sinservice 的回复:]
我没看清题目,呵呵。

连续写两个常量字符串,等于连接起来。
[/Quote]

多谢回复!这是是C99引入的新规矩吗?还是一直以来都可以的?
「已注销」 2011-09-20
  • 打赏
  • 举报
回复
比如 "a" "b" 等价于 "ab"
common_man 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sinservice 的回复:]
要转义。

用转义符 \

\\ = \
\n = 回车
\r = 换行
\t = 制表符
\xDD = ascii 字符,DD是16进制码
\DDD = ascii 字符,DD是8进制码
\0 = ascii 字符0
\" = "
\' = '
[/Quote]

我不是要输出双引号本身,我奇怪的是,连续两个双引号怎么可以通过编译?
BTW,这是宏展开后的代码,一般在代码里面应该不会有人直接这么写的
「已注销」 2011-09-20
  • 打赏
  • 举报
回复
我没看清题目,呵呵。

连续写两个常量字符串,等于连接起来。
pengzhixi 2011-09-20
  • 打赏
  • 举报
回复
因为 标准规定了 "hello"" world"和"hello world"是一样的。
Alename 2011-09-20
  • 打赏
  • 举报
回复
没什么 ,只是一种写法罢了
「已注销」 2011-09-20
  • 打赏
  • 举报
回复
要转义。

用转义符 \

\\ = \
\n = 回车
\r = 换行
\t = 制表符
\xDD = ascii 字符,DD是16进制码
\DDD = ascii 字符,DD是8进制码
\0 = ascii 字符0
\" = "
\' = '




LENOVO_ 2011-09-20
  • 打赏
  • 举报
回复
是有这样一种写法的。

printf(
"i"
"love"
"the"
"world"
);

70,007

社区成员

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

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