这两个printf语句为什么不一样呢,求区别

来源:1-6 程序解释——注释

cu_若泪

2015-08-07 10:50

#include <stdio.h>
int main()
{
    printf("你是我的小呀小苹果儿\n"
    "怎么爱你都不嫌多\n"
    "红红的小脸儿温暖我的心窝\n"
    "点亮我生命的火 火火火火\n");
    return 0;
}

#include <stdio.h>
int main()
{
    //这是一首思念家乡的诗
    printf("床前明月光,");
    printf("疑是地上霜。");
    printf("举头望明月,");
    printf("低头思故乡。");
    /*短短四句诗,写得清新朴素,明白如话。它的内容是单纯的,但同时却又是丰富的。
    它是容易理解的,却又是体味不尽的。诗人所没有说的比他已经说出来的要多得多。
    它的构思是细致而深曲的,但却又是脱口吟成、浑然无迹的。从这里,我们不难领
    会到李白绝句的“自然”、“无意于工而无不工”的妙境。*/
 return 0;   
}

看着两个他的printf语句不一样呢,第一个只有一个printf但是第二个每条语句前都有printf,求大神解惑

写回答 关注

2回答

  • onemoo
    2015-08-07 23:16:28
    已采纳

    printf的第一个参数就是字符串,准确地说叫格式化字符串。printf会把这个字符串输出,如果其中包含格式化指示符(%d %f等),就按顺序将后面参数放到格式化字符串的相应位置输出。


    第二个例子中就是用了4个printf输出了4句诗。因无需加入其他格式化指示,故直接把要输出的句子作为第一个参数了。


    第一个例子其实也是一样的,只是用了一个printf语句,参数是一个包含了4句话 4个换行的字符串。

    这里用到C语言的一个特性:如果两个字符串字面量(指用双引号括起来的字符串)紧挨着,或之间只有空白相隔,就自动将这两个字符串接成一段字符串。 注意C语言将空格 tab 回车都视作空白字符(blank),所以即便这4句话写在了4行,但它们之间没有其他C语言的符号,C仍会将它们自动连接成一个字符串。于是这句代码其实是这样的:

    printf("你是我的小呀小苹果儿\n怎么爱你都不嫌多\n红红的小脸儿温暖我的心窝\n点亮我生命的火 火火火火\n");

    这样printf的第一个参数还是一个字符串,可以正常输出。

    这个特性其实就是可以让你把一个很长的字符串写在多行上,这样代码更容易读。

    cu_若泪

    非常感谢!

    2015-08-09 09:51:49

    共 1 条回复 >

  • Perona
    2015-08-07 11:25:20

    第一个是输出整段文字,第二个是逐行输出文字。

    kk_hah...

    cuole

    2015-12-12 11:11:34

    共 2 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题