优秀_c497D 发表于 2019-11-25 03:13:54

为什么不能编译出来勒

#include <stdio.h>

int main ()
{
        printf("\n\
        **         *\n\
   *******   **\n\
**************\n\
***@********* ****\n\
**********   ****\n\
   *******   ***\n\
   **      *\n\");
        return 0;
}

jackz007 发表于 2019-11-25 10:53:59

本帖最后由 jackz007 于 2019-11-25 12:20 编辑

      这一行:
   **      *\n\");
      红色的 '\' 必须删掉。

优秀_c497D 发表于 2019-11-26 02:12:03

为什么啊?

优秀_c497D 发表于 2019-11-26 02:12:35

jackz007 发表于 2019-11-25 10:53
这一行:
   **      *\n\");
      红色的 '\' 必须删掉。

为什么勒?

Judie 发表于 2019-11-26 07:53:09

如何在帖子中插入图片和使用代码段
https://fishc.com.cn/thread-128631-1-1.html
(出处: 鱼C论坛)

jackz007 发表于 2019-11-26 10:04:26

本帖最后由 jackz007 于 2019-11-26 10:07 编辑

优秀_c497D 发表于 2019-11-26 02:12
为什么勒?

      这个 '\' 不在行尾,会被视为转义字符, '\"' 又恰好是双引号字符,这样,printf() 中的字符串就会失去尾部的双引号,从而,使字符串变得不完整。

hrp 发表于 2019-11-26 18:25:24

**      *\n\"); 这个,
要么 **      *\n"); 这样
要么 **      *\n\\"); 这样

沉默的人e 发表于 2019-11-27 16:28:30

优秀_c497D 发表于 2019-11-26 02:12
为什么勒?

像计算机一样,模拟计算机的运行顺序。

读取头文件不说,
记住一个基本事实,C执行程序,是先在叫main的“部分”中执行的(跟着小甲鱼学,你会知道这个"部分"叫函数)。在main中,先执行的是printf工具(函数),这个工具处理的对象(“参数”)是一串东西(你画的鱼),前面都没有问题,到了最后,你要知道,printf这个工具处理的对象应该是字符串,而字符串中有个字符叫转义字符“\”它的作用就是将他后面的东西转成别的含义,本来“的作用是结束字符串的标志(姑且这么想吧)但转义之后,这个作用就没了,也变成了字符串的一部分了所以他报错可能认为,你的printf程序没有写完而且少了分号并且没有return与},因为他们全都变成字符串的一部分了。
页: [1]
查看完整版本: 为什么不能编译出来勒