c语言中printf打印字符串的问题

在C语言中:
printf("%s", "Hello world");
printf("Hello world");
这两个有什么区别吗?

printf("%s", "Hello world");
printf() 函数 有2 个 实际参数,
第2个参数: "Hello world" 是字符串常量,存放在某内存区域。
第一个参数是格式,其中 %s 是输出格式转换。
执行时 要把 第2个参数 按 %s 的方式 作 格式转换,然后输出。
-----------------------
printf("Hello world");
printf() 函数 有1 个 实际参数,
第一个参数是格式 "Hello world",格式中 无 %s 之类的 格式转换,只需 直接印刷 Hello world
-----------------------
两个输出的结果没有什么区别,都是 Hello world 字样。
但执行速度显然 printf("Hello world"); 快,因为它只有1个参数,且 不需 做 格式转换,只需 直接印刷。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-04
你好!!
输出的结果是一样的,只是函数的应用格式不同
第一个格式 printf( 格式控制 , 输出表列 ) 这样的格式更灵活,一般用于变量输出
第二个格式 printf( 输出表列 ) 直接输出内容,一般用于信息提示
第2个回答  2013-11-03
因为"Hello world"不包含%字符,所以没有差别,如果包含的话,后一种就危险了,历史上有过这样的漏洞造成巨大损失的……追问

有没有相关链接能看一下啊。。

追答

自行百度“C陷阱与缺陷”……

本回答被提问者采纳
第3个回答  2013-11-03
没区别,只是接受的参数方式不一样。
第4个回答  2013-11-03
上面是格式输出,可用于数组或指针指向的字符串输出,下面的直接输出一串