为什么不能编译出来勒
#include <stdio.h>int main ()
{
printf("\n\
** *\n\
******* **\n\
**************\n\
***@********* ****\n\
********** ****\n\
******* ***\n\
** *\n\");
return 0;
} 本帖最后由 jackz007 于 2019-11-25 12:20 编辑
这一行:
** *\n\");
红色的 '\' 必须删掉。 为什么啊?
jackz007 发表于 2019-11-25 10:53
这一行:
** *\n\");
红色的 '\' 必须删掉。
为什么勒?
如何在帖子中插入图片和使用代码段
https://fishc.com.cn/thread-128631-1-1.html
(出处: 鱼C论坛)
本帖最后由 jackz007 于 2019-11-26 10:07 编辑
优秀_c497D 发表于 2019-11-26 02:12
为什么勒?
这个 '\' 不在行尾,会被视为转义字符, '\"' 又恰好是双引号字符,这样,printf() 中的字符串就会失去尾部的双引号,从而,使字符串变得不完整。 ** *\n\"); 这个,
要么 ** *\n"); 这样
要么 ** *\n\\"); 这样 优秀_c497D 发表于 2019-11-26 02:12
为什么勒?
像计算机一样,模拟计算机的运行顺序。
读取头文件不说,
记住一个基本事实,C执行程序,是先在叫main的“部分”中执行的(跟着小甲鱼学,你会知道这个"部分"叫函数)。在main中,先执行的是printf工具(函数),这个工具处理的对象(“参数”)是一串东西(你画的鱼),前面都没有问题,到了最后,你要知道,printf这个工具处理的对象应该是字符串,而字符串中有个字符叫转义字符“\”它的作用就是将他后面的东西转成别的含义,本来“的作用是结束字符串的标志(姑且这么想吧)但转义之后,这个作用就没了,也变成了字符串的一部分了所以他报错可能认为,你的printf程序没有写完而且少了分号并且没有return与},因为他们全都变成字符串的一部分了。
页:
[1]