wsq999 发表于 2020-9-25 16:02:45

关于C语言的转义字符\用法和\\和\\n用法

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

int main()
{
printf("      / \\n");
printf("      123\n");
printf("      123");
      return 0;
}

sunrise085 发表于 2020-9-25 16:14:22

本帖最后由 sunrise085 于 2020-9-25 16:26 编辑

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

给你一个C语言转义字符表看看,注意:后面两个表示的是ASCII码值对应的字符,例如,\101和\x41表示的都是字母A

liuzhengyuan 发表于 2020-9-25 16:07:44

\\n 表示输出 \n 而不是换行

wsq999 发表于 2020-9-25 16:26:35


\\表示的其实是\
\n表示的是换行
所以\\n表示的就是字符\和字符n
如果只有一个\,编译的时候会报错“unknown escape sequence: '\/'”
printf("////\\\n");实现的打印效果就是////\+换行

wsq999 发表于 2020-9-25 16:27:06

liuzhengyuan 发表于 2020-9-25 16:07
\\n 表示输出 \n 而不是换行

是的,学会了

wsq999 发表于 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;
}

sunrise085 发表于 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码表

wsq999 发表于 2020-9-25 16:51:53

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

我懂你的意思,ASCII表中65表示的是字符A,所以10141是用不同的进制表示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;
}

sunrise085 发表于 2020-9-25 16:59:51

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

你想多了。没有这种表示方式,你认真看3楼的表了吗?

wsq999 发表于 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进制,会提示错误。

#include <stdio.h>
int main()
{
//ASCII码中的65表示字符A      
printf("\ddd101\n");//8进制101表示10进制65
printf("\xhh41\n");//16进制的41表示10进制65
    return 0;
}

sunrise085 发表于 2020-9-25 17:34:12

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

{:5_104:}{:5_104:}
那个ddd表示十进制的三位数,第二栏中说明了这里写八进制数,也就是用0~7填充着三个d
下同。你的语文不咋样啊

wsq999 发表于 2020-9-26 08:35:37

懂了,自己sb了
页: [1]
查看完整版本: 关于C语言的转义字符\用法和\\和\\n用法