鱼C论坛

 找回密码
 立即注册
查看: 1970|回复: 11

[已解决]关于C语言的转义字符\用法和\\和\\n用法

[复制链接]
发表于 2020-9-25 16:02:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,为啥第一个printf(" / \\n");不会换行,求解~
#include <stdio.h>

int main()
{
printf("        / \\n");
printf("        123\n");
printf("        123");
        return 0;
}
最佳答案
2020-9-25 16:14:22
本帖最后由 sunrise085 于 2020-9-25 16:26 编辑

C语言中,字符串内的反斜杠是转义字符,能转义的都会进行转义
你的第五行,第一个反斜杠把第二个反斜杠转义了,最后的字母n就是单纯的字母了。"\\"意思就是输出反斜杠

给你一个C语言转义字符表看看,注意:后面两个表示的是ASCII码值对应的字符,例如,\101和\x41表示的都是字母A
微信截图_20200925162142.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-25 16:14:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-9-25 16:26 编辑

C语言中,字符串内的反斜杠是转义字符,能转义的都会进行转义
你的第五行,第一个反斜杠把第二个反斜杠转义了,最后的字母n就是单纯的字母了。"\\"意思就是输出反斜杠

给你一个C语言转义字符表看看,注意:后面两个表示的是ASCII码值对应的字符,例如,\101和\x41表示的都是字母A
微信截图_20200925162142.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 16:07:44 | 显示全部楼层
\\n 表示输出 \n 而不是换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-25 16:26:35 | 显示全部楼层

\\表示的其实是\
\n表示的是换行
所以\\n表示的就是字符\和字符n
如果只有一个\,编译的时候会报错“unknown escape sequence: '\/'”
printf("////\\\n");实现的打印效果就是////\+换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-25 16:27:06 | 显示全部楼层
liuzhengyuan 发表于 2020-9-25 16:07
\\n 表示输出 \n 而不是换行

是的,学会了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-25 16:31:52 | 显示全部楼层
sunrise085 发表于 2020-9-25 16:14
C语言中,字符串内的反斜杠是转义字符,能转义的都会进行转义
你的第五行,第一个反斜杠把第二个反斜杠转 ...

恩,我试了下,确实\101和\x41都是表示的字母A,具体是什么原因呢,能否讲一下~
#include <stdio.h>

int main()
{
printf("\101\n");
printf("\x41\n");
printf("        123\n");
printf("        123");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 16:38:02 | 显示全部楼层
wsq999 发表于 2020-9-25 16:31
恩,我试了下,确实\101和\x41都是表示的字母A,具体是什么原因呢,能否讲一下~


3楼中不是和你说了么。。
表中的后两个表示的是ASCII码值对应的字符
\101和\x41 表示的是ASCII码为65的字符即字母A,十进制的65表示成八进制为101,表示为十六进制为41
再不清楚的话去查查ASCII码表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-25 16:51:53 | 显示全部楼层
sunrise085 发表于 2020-9-25 16:38
3楼中不是和你说了么。。
表中的后两个表示的是ASCII码值对应的字符
\101和\x41 表示的是ASCII码为65 ...

我懂你的意思,ASCII表中65表示的是字符A,所以101  41是用不同的进制表示65,假如我想要用二进制和十进制表示65的话,应该怎么表示呢。代码如下
#include <stdio.h>

int main()
{
//ASCII码中的65表示字符A        
printf("\101\n");//8进制101表示10进制65 
printf("\x41\n");//16进制的41表示10进制65 
printf("\65\n");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 16:59:51 | 显示全部楼层
wsq999 发表于 2020-9-25 16:51
我懂你的意思,ASCII表中65表示的是字符A,所以101  41是用不同的进制表示65,假如我想要用二进制和十进 ...

你想多了。没有这种表示方式,你认真看3楼的表了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-25 17:15:28 | 显示全部楼层
sunrise085 发表于 2020-9-25 16:59
你想多了。没有这种表示方式,你认真看3楼的表了吗?


看了啊,我不明白为啥/直接写101就是8进制;/后面加一个x就是16进制。我记得以前学的用0H表示二进制的。
#include <stdio.h>

int main()
{
//ASCII码中的65表示字符A        
printf("\101\n");//8进制101表示10进制65 
printf("\x41\n");//16进制的41表示10进制65 
    return 0;
}

我按照表里面写\ddd和\xhh想要表达8进制或者16进制,会提示错误。
[/code]
#include <stdio.h>
int main()
{
//ASCII码中的65表示字符A        
printf("\ddd101\n");//8进制101表示10进制65 
printf("\xhh41\n");//16进制的41表示10进制65 
    return 0;
}
[/code]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 17:34:12 | 显示全部楼层
wsq999 发表于 2020-9-25 17:15
看了啊,我不明白为啥/直接写101就是8进制;/后面加一个x就是16进制。我记得以前学的用0H表示二进制的 ...


那个ddd表示十进制的三位数,第二栏中说明了这里写八进制数,也就是用0~7填充着三个d
下同。你的语文不咋样啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-26 08:35:37 | 显示全部楼层
懂了,自己sb了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 23:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表