求助作业s1E3printf()打印飞机中的一些不理解的地方
本帖最后由 愈伤组织 于 2019-2-16 22:35 编辑#include<stdio.h>
int main()
{
printf(" @\n");
printf(" / \ \n");
printf(" * *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * * * * * *\n");
printf("* * * * * * * *\n");
printf("* * * * * * * * * *\n");
printf(" * * \n");
printf(" * * \n");
printf(" * * * *\n");
printf(" * * * * * *");
return 0;
}
这个结果是
#include<stdio.h>
int main()
{
printf(" @\n");
printf(" / \\ \n");
printf(" * *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * * * * * *\n");
printf("* * * * * * * *\n");
printf("* * * * * * * * * *\n");
printf(" * * \n");
printf(" * * \n");
printf(" * * * *\n");
printf(" * * * * * *");
return 0;
}
我上网查看了转义字符也就那么几个 这跟转义字符没有关系吧?
本帖最后由 jackz007 于 2019-2-16 22:46 编辑
没有问题呀,楼主想求助什么?
'\' 是转义前导字符,任何时候,如果想表达字符 '\'本身,必须经过转义,用 '\\' 来表示。
如:"C:\\Windows\\System32\\NotePad.exe" 看了关天,你到底哪里不理解,能说清楚点? 反斜杠+空格=什么情况下都不会忽略的空格(也就是说,反斜杠被用于转义了) TCY 发表于 2019-2-17 11:05
反斜杠+空格=什么情况下都不会忽略的空格(也就是说,反斜杠被用于转义了)
\+space 转义字符里不是没有这个控制字符的吗? ba21 发表于 2019-2-16 22:46
看了关天,你到底哪里不理解,能说清楚点?
你看图片就能知道了 愈伤组织 发表于 2019-2-17 20:20
你看图片就能知道了
看图?
\\ 和 \是不是?你会叫我看图,你难道不会对比代码?
明显就是\ 把 \转入,使得能免输出1个字符'\'
\ ,后面有个空格,就是空格原样输出。有还有什么不明白? 本帖最后由 时雨059905 于 2019-2-20 23:43 编辑
愈伤组织 发表于 2019-2-17 20:19
\+space 转义字符里不是没有这个控制字符的吗?
刚刚发现说的有点bug,来重新说一下-_-
编译器是一个一个字符一个字符读取的东西
我觉得应该是编译器读到“\”这个字符,就执行这个字符的命令
我记得小甲鱼好像说过,“\”这个字符所代表的命令是“将本行代码与下一行连在一起,为了防止代码太长的情况出现”,所以这里“\”这个字符执行了它的命令(就是前面说的那个),之后就消失了,然后打印后面的空格字符并执行转义字符“\n”的命令 ba21 发表于 2019-2-17 20:53
看图?
\\ 和 \是不是?你会叫我看图,你难道不会对比代码?
\\ 和 \+space 然后输出的结果就截然不容了
我不太好用语言描述这个问题
空格原样输出以后为什么不在执行换行的\n控制字符了? jackz007 发表于 2019-2-16 22:42
没有问题呀,楼主想求助什么?
'\' 是转义前导字符,任何时候,如果想表达字符 '\'本身,必 ...
但是第一幅图片用代码printf(“/ \ \n”);输出的结果就少了一条\ 时雨059905 发表于 2019-2-17 21:37
刚刚发现说的有点bug,来重新说一下-_-
我觉得应该是编译器读到“\”这个字符,就执行这个字符的命令
...
说的好像有道理,但是我要验证一下子,可是我太忙了呜呜 愈伤组织 发表于 2019-2-17 22:37
说的好像有道理,但是我要验证一下子,可是我太忙了呜呜
{:10_306:}楼主噶油啊 \+space=space 愈伤组织 发表于 2019-2-17 22:30
\\ 和 \+space 然后输出的结果就截然不容了
我不太好用语言描述这个问题
空格原样输出以后为什么不在执 ...
\\表示输出 1个'\' 能懂?
\ 后面如果不是转义字符,原样输出。能懂?
这都不明白,让人感觉是是不是对牛弹琴
本帖最后由 愈伤组织 于 2019-2-18 22:38 编辑
时雨059905 发表于 2019-2-17 23:15
楼主噶油啊
#include <stdio.h>
int main()
{ printf("我是 \ ");
printf("谁");
return 0;
}
#include <stdio.h>
int main()
{ printf("我是 \
谁? ");
return 0;
}
你的说法是成立的哈哈,能重新组织下语言吗?我要把你的解答设置为最佳解答 本帖最后由 愈伤组织 于 2019-2-18 22:37 编辑
ba21 发表于 2019-2-18 20:09
\\表示输出 1个'\' 能懂?
\ 后面如果不是转义字符,原样输出。能懂?
我不能苟同你的回答
#include <stdio.h>
int main()
{ printf("我是一个\.什么样的人\n");
return 0;
}
#include <stdio.h>
int main()
{ printf("我是 \
谁? ");
return 0;
}
#include <stdio.h>
int main()
{ printf("我是 \
谁? \n");
printf("我是\=-0 \n");
printf("谁");
return 0;
}
这些例子都证明了一个问题单独一个\+一串字符如果是转义字符就当做转义字符处理,如果不是就当做连接后面字符串的作用。 愈伤组织 发表于 2019-2-18 22:22
你的说法是成立的哈哈,能重新组织下语言吗?我要把你的解答设置为最佳解答
哈哈 你觉得我那个哪里说得不是很明白呢 时雨059905 发表于 2019-2-19 22:11
哈哈 你觉得我那个哪里说得不是很明白呢
我觉得要把这个问题说得更清楚一些,供后者借鉴 愈伤组织 发表于 2019-2-20 21:53
我觉得要把这个问题说得更清楚一些,供后者借鉴
嗯哼 我改完啦 你看看有啥问题吧
页:
[1]