C语言王国探险记之转义字符+结构语句

news2025/1/11 2:23:29

王国探险记系列

文章目录(4)


一,什么是转义字符

1.1转义字符的重要性?

 二,了解一下转义字符有那些

三,精讲转义字符

3.1转义字符\n

3.2转义字符\?

 3.3转义字符 \‘和\"

 3.3转义字符 \\

 3.4转义字符 \a,\r,\n

 3.5转义字符 \b

3.6转义字符 \f和\v

3.7转义字符 \t

 3.8转义字符\ddd

  3.9转义字符\xdd

四,什么是结构语句?

4.1选择语句就是if语句和switch语句

 4.2循环结构


前言

C语言王国探险记,是我们学习C语言,从小白成长为大佬的的探险历程,我们在这章将探险转义字符+结构语句这两个知识关卡


一,什么是转义字符

我们在前面看程序的时候,有没有感到疑惑这个\n是什么?
\0为啥是结束标志
\n是换行
这些东西为啥这么写呢
他们叫转义字符
转义字符要怎么理解呢:就是转变原来的意思,就把字符的意思给转变了

1.1转义字符的重要性?

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
	printf("c:\\code\\test111\\tets.c");
  //比如说我想要打印一个这样的输出结果c:\code\test111\tets.c
	//但是会发现我们打印的结果和我们想要的结果是不相同的
	return 0;
}

 

//为什么会打印不出来呢
//C语言会把这种\在加一个字符的形式会理解为转义字符
//\c好像不是转义字符,但是好像也被处理了一下
//\t也是一个转义字符,编译器就把\加一个字母的形式当成一个转义字符了
//电脑按照自己的方式去理解了,那我们这里怎么办
int main()
{
	printf("c:\\code\\test111\\tets.c");
 //所以我们在转义字符的前面在加一个\就让\t变成原来的意思不在具有转义字符的意思,\转义\让\变的普普通通的

	return 0;
}
//所以大家看有一些时候转义字符是必须存在的,有转义字符这种方式才能打印处理我们想要的结果

 二,了解一下转义字符有那些

三,精讲转义字符

3.1转义字符\n

换行符\n:只是在n的前面加了一个\就变的,不在打印n,直接跳到了下一行,这就是n前面加了一个\就变成了换行的意思

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
	printf("abcdnef");//当我们这么写的时候,我们的屏幕就会打印出abcdnef
	return 0;
}
int main()
{
	printf("abcd\nef");//我们在n的前面加一个\吧
	//这个时候我们运行代码的时候发现不一样了代码被分为了两行,且n没有了
	return 0;
}

//只是在n的前面加了一个\就变的,不在打印n,直接跳到了下一行,
//这就是n前面加了一个\就变成了换行的意思

 

3.2转义字符\?

解释:在书写连续多个问号时使用,防止他们被解析成三字母词
这个转义字符现在是验证不出来的
因为现在的编译器都不支持

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
	printf("(are you ok??)");//在新的编译器下是演示不出来效果的
	//j假如说我们想要打印出这样的一段话(are you ok??)
	//但是在一些古老的编译器上是打印不出来这句话的
	//但是在我们现在的编译器是可以的
	//但是在一些古老的编译器上会打印出这样一段话(are you ok]
	//这是什么原因呢?
	//在早期的机器上我们加入了一个叫??)的东西
	//??( --被解析为[
	//??) --被解析为]
	//像上面这种由??开头加一个符号的形式其实给了几种组合
	//这种叫做三字母词
	//这种三字母词在支持三字母词的编译器上就会被替换成另一个符号
	//但是本质上我就想打印出(are you ok??)
	//如果我们想要在如何一个编译器上都可以打印出我们想要的东西
	//我们就要两个问号的前面都加上一个\就可以了
	printf("(are you ok\?\?)");//这种写法在任何的编译器都可以打印出(are you ok??)
	//我们加一个\是为了让这个?不在是三字母词里面的问号,这就是转义了问号
	return 0;
}

 3.3转义字符 \‘和\"

 \'用于表示字符常量’
 \"用于表示一个字符串内部的双引号

我们将在代码加注释和结果运行图中进行知识点的讲解:

//%c -- 是打印字符
//打印一个字符
int main()
{	
	printf("%c\n", 'a');
	printf("%c\n", 'b');
	//这就是打印字符a,单引号a就是字符a的意思
	//如果要打印一个单引号呢,单引号也是一个字符
	//printf("%c\n", ''');
	//我们这样写是不行的,编译器就会报错
	//因为我们编译的的时候,字符就是被单引号引起来的
	//所以编译器看到前两个单引号的时候就以为是它们是一对的,后面那个单引号就落单了
	//我们要怎么解决呢在中间那个单引号前加一个
	printf("%c\n", '\'');
	//把中间那个单引号进行转义,让其不在变成我们一对单引号中的单引号
	//我们打印字符串的时候怎么做
	printf("%s\n", "abc");
	//字符串里面也可能是一个字符
	//也是可以的
	printf("%s\n", "a");//我们打印字符串,即使只有一个字符,但是还是有两个字符的,
	//因为还要一个隐藏的字符\0
	//但是我们要打印的一个双引号,就会在次出现问题
	//printf("%s\n",""");
	//就和单引号一样,就会落单了,所以需要转义一下,中间那个双引号,
	//让他变成一个普普通通的双引号就行了
	printf("%s\n", "\"");

	return 0;
}

 3.3转义字符 \\

转义字符\\:用于表示一个反斜杠,防止它被解释为一个转义系列符
就是在\之前加一个\将第2个斜杠被转义为一普通的\,双重肯定表示否定

 3.4转义字符 \a,\r,\n

\a:警告字符,蜂鸣

会触发我们电脑的蜂鸣

\n换行

\r回车

//\a警告字符,蜂鸣
//int main()
//{
//	printf("\a");
//	return 0;
//}
//会触发我们电脑的蜂鸣

 3.5转义字符 \b

转义字符 \b:退格符

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
	printf("abcdef\n");//可以在屏幕上打印出来abcdef这几个字符
	//如果我在d的前面加上一个\b,会是什么样的呢
	printf("abc\bdef\n");
	//我们就会发现输出结果就没有c了,
	//为什么是这样的呢?
	//其实退格符意思是这样 :我们先在屏幕上打印abc,来的c后面的字母了,
	//所谓\b就是往回退一格,就是从c的后面退到c的前面了,然后在开始打印,
    //所以c就被覆盖了,所以打印结果为abdef
	return 0;
}

3.6转义字符 \f和\v

 基本上不使用了,所以我们不去介绍:

3.7转义字符 \t

\t水平制表符

我们将在代码加注释和结果运行图中进行知识点的讲解:

//\t水平制表符
int main()
{
	printf("abciiiidef\n");
	printf("a\tbcdef\n");//会后退7格打印
	printf("ab\tcdef\n");//会后退6格打印
	printf("abc\tdef\n");//会后退5格打印
	printf("abcd\tef\n");//会后退4格打印
	printf("abcde\tf\n");//会后退3格打印
	//就是/t的退格是按照4的倍数来进行退格,在编译器里面按4来退格
	//相当于我们键盘的Tab键
	//p	rintf();//我们在p的前面加一个tab键就会退三格,按照4的倍数进行退格
	//12345
	//斜杠t我们一般是用来进行对齐的时候才使用的
	return 0;
}

 3.8转义字符\ddd

 \ddd ddd表示1~3个八进制的数字。如:\130表示字符x
为什么\130表示字符X呢?因为130是3个八进制的数字,所以转化为十进制就88,那88和x有什么关系呢?
我们键盘上可以打印的如ABC等
我们又知道计算机可以处理的是二进制
数据在存储的时候,存储的也是二进制
我们就把每个字符都编了一个号,A--65,B--66,C--67
所以我们存储的时候将字符的编号的存储起来就行了
给字符编号的动作叫做编码
有一种编码叫做ASCII 编码
而我们c语言中对字符的编码方式就是ASCII编码的方式
每一个字符对于的数字就是它的ASCII码值
我们要进行验证一下看88对应的是不是X呢
这种转义字符呢?代表的是\后面的这3个,1~3个八进制数字转换为十进制数字之后,以那个数字代表的ASCII码值代表的字符进行打印
这个转义字符就是以八进制的形式去打印字符

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
	printf("%c",'\130');
	return 0;
}

  3.9转义字符\xdd

\xdd dd表示2个十六进制数字。如:\x30表示字符0
x表示的是十六进制的意思,所以后面的dd表示两个十六进制数字
我们可以将其理解为字符的十六进制形式
\x30转换为十进制形式就是48了
所以会打印的是ASCII码值为48的字符也就是0了
ASCII码表的取值是0~127
我们输入的ASCII码值是不能超过取值范围的,超出范围就不可预测了,
ASCII码表的0~31是不可打印字符,
我们看一下\0就是\ddd的这种转义字符

四,什么是结构语句?

其实我们生活中的一切事情都可以抽象为顺序结构,选择结构,和循环结构
 或者是这三种结构的组合
我们知道c语言是—结构化的程序设计语言
我们c语言支持三种结构
1,一种叫顺序结构
 就是一条道走到黑就可以了,不需要停止
 没什么好讲的
2,一种叫选择结构
遇到分叉路口要选择一条路去走
 c语言提供了两种结构
一种叫if    一种叫switch
3,一种叫循环结构
一直在原地打转
其实就是我们的while ,for,do{}whiel;

4.1选择语句就是if语句和switch语句

我们要现在先了解if语句,知道switch语句就行:

我们将在代码加注释和结果运行图中进行知识点的讲解:

 

int main()
{
	int input = 0;
	printf("学习c语言\n");
	printf("你打算好好学习吗?(1/0):");
	//如果你选择1,我认为你大算好好学习
	//如果你选择0,我认为你不打算好好学习
	//选1或者选0的时候是不是相当于输入值啊
	scanf("%d",&input );//我们输入的一个是一个整数,所以使用%d,
	//而且输入的值要存起来,所以创建一个变量,存放在里面
	if (input == 1)//选择了好好学习1
	{
		printf("成为大佬\n");
	}
	else//如果没有选择好好学习选择了0
	{
		printf("还是菜鸟\n");
	}
	//不同的选择,面临不同的结果,我们运行看一下,这就是我们的分支结果的效果
	return 0;
}

 4.2循环结构

一些事情必须一直去做,比如日复一日的学习
这就是循环啊
当循环被打破就要被终止
生活中,我们有时候会经常做,但是有一天,我们也可能打破这个循环的节奏,然后就是循环终止
c语言中如何实现喜欢呢?
while语句的讲解
for语句(后面文章里面有,先知道有这个)
do...while语句(后面文章里面有,先知道有这个)

while语句的逻辑图

实例
我们认为一个人写够30000行代码,这个人的水平就不错了
代码能力就提升上了了
而写不够三万行代码,我们就认为他还不行

我们通过不断重复的敲代码,
    让代码行数不断的增加当你的行数增长到30000行的时候
    你就变成了大佬,当你的代码行数不到30000的时候,我们认为你还不行,
    那我们这个逻辑要怎么做呢?
    我们敲代码,然后行++,是不是把这个动作

    我们就看下面的代码使用while

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
	/*我们通过不断重复的敲代码,
	让代码行数不断的增加当你的行数增长到30000行的时候
	你就变成了大佬,当你的代码行数不到30000的时候,我们认为你还不行,
	那我们这个逻辑要怎么做呢?
	我们敲代码,然后行++,是不是把这个动作循环起来就行了*/
	//我们就看下面的代码使用while
	int line = 0;
	while (line<30000)//条件是要大于30000才能跳出循环
	{
		printf("敲代码:%d\n",line);
		line++;
	}
	if (line == 30000)//跳出循环之后,我们在判断一下,是不是到了30000行,到了30000就是大佬了
	{
		printf("大佬一枚\n");
	}
	return 0;
}

如果不在while()后面加一个if()语句进行判断,这个逻辑是存在问题的

如果自己懒惰了,天天摆烂,在也不敲代码了

他是不是也让这个循环终止了

那他能成为大佬吗?当然不能了

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
	int line = 0;
	while (line < 30000)
	{
		//提前跳出循环的问题
		/*自己懒惰了,天天摆烂,在也不敲代码了
		他是不是也让这个循环终止了
		那他能成为大佬吗?当然不能了*/
		if (line == 1000)
		{
			printf("开始摆烂了\n");//开始摆烂就打破了这个循环
			break;//使用break终止这个循环
		}

		printf("敲代码:%d\n", line);
		line++;
	}
		//printf("大佬一枚\n");
		//所以说这个逻辑是不正确的,不能说出了循环就变成大佬了所以我们才要判断
		//你即使出了循环,但是你没有写够30000行依然不是大佬
	
	return 0;
}

 我们通过上述的代码运行图可以知道如果不加if语句判断这个程序的存在逻辑问题的:

我们只需要加一下if判断语句就可以将该程序的逻辑漏洞:

int main()
{
	int line = 0;
	while (line < 30000)//条件是要大于30000才能跳出循环
	{
		//提前跳出循环的问题
		//自己懒惰了,天天摆烂,在也不敲代码了
		//他是不是也让这个循环终止了
		//那他能成为大佬吗?当然不能了
		if (line == 1000)
		{
			printf("开始摆烂了\n");//开始摆烂就打破了这个循环
			break;//使用break终止这个循环
		}

		printf("敲代码:%d\n", line);
		line++;
	}
		//printf("大佬一枚\n");
		//所以说这个逻辑是不正确的,不能说出了循环就变成大佬了所以我们才要判断
		//你即使出了循环,但是你没有写够30000行依然不是大佬
	if (line == 30000)//跳出循环之后,我们在判断一下,是不是到了30000行,到了30000就是大佬了
	{
		printf("大佬一枚\n");//给大家解释一下,这个判断还是很有必要的
	}
	return 0;
}


总结

以上就是今天要讲的内容,本文仅仅全面介绍了转义字符和大概了解结构语句,可以让你在c语言王国的探险更加有趣,充实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生丶Kubernetes】Kubernetes初体验

人生若只如初见&#xff0c;何事秋风悲画扇。 前言 Kubernetes 是目前最流行的容器编排工具之一&#xff0c;由Google开发并维护。它提供了完整的容器编排解决方案&#xff0c;包括自动化部署、资源管理和调度、服务发现和负载均衡等功能。 然而&#xff0c;对于初学者来说&a…

Android Studio实现内容丰富的安卓民宿酒店预订平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号106 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看民宿 3.民…

缔造网络世界的奇迹:OSI参考模型的魔力之旅

文章目录 一 OSI参考模型1.1 OSI参考模型简介1.2 OSI参考模型的下特性和优点1.3 OSI参考模型的层次结构1.4 OSI参考模型层次间的关系以及数据封装 二 OSI参考模型的层次结构详解2.1 物理层2.2 数据链路层2.3 网络层2.3.1 网络层地址2.3.2 路由协议与可路由协议2.3.3 面向连接和…

激光SLAM(二):点云拟合和平面参数化

点云拟合和平面参数 一、平面拟合&#xff1a;特征值法和SVD法二、平面参数化1&#xff09;Hesse形式2&#xff09;球坐标3&#xff09;最近点4) 单位四元数 三、直线拟合 一、平面拟合&#xff1a;特征值法和SVD法 平面方程如下&#xff0c;n是法向量&#xff0c;d是截距 当…

python协程—asyncio模块

目录 什么是协程 协程的特点 为什么使用协程 asyncio协程模块 多任务的协程 总结 什么是协程 协程&#xff08;Coroutine&#xff09;是一种并发编程的技术&#xff0c;它允许程序在执行过程中暂停和恢复。协程可以看作是一种特殊的函数&#xff0c;它可以暂停执行&#…

快速安装Kibana,head插件以及IK分词器

安装Kibana Kibana是基于node.js的,安装这个之前要先安装node.js 1 压缩包下载地址: Kibana 6.2.4 | Elastic 2.将下载的Kibana压缩包解压到任意一个没有中文没有空格的目录下,进入Kibana安装目录下的config目录&#xff0c;修改kibana.yml文件&#xff0c;添加Elasticsearch服…

钳形表校准装置 “定点输出”方式

装置具有“定点输出”方式&#xff0c;通过点击触摸屏&#xff0c;直接设置所需输出的量值&#xff0c;装置将全自动切换至最佳量程输出&#xff0c;使得校准数字式仪表变得非常方便。特别是在设定交流电压/电流输出时&#xff0c;直接同时输入幅值和频率即可&#xff0c;使用十…

【计算机视觉】对比学习综述(自己的一些理解)

对比loss 对比学习的 loss&#xff08;InfoNCE&#xff09;即以最 大化互信息为目标推导而来。其核心是通过计算样本表示间的距离&#xff0c;拉近正样本&#xff0c; 拉远负样本&#xff0c;因而训练得到的模型能够区分正负例。 具体做法为&#xff1a;对一个 batch 输入的图…

Tensorflow入门(1)——深度学习框架Tesnsflow入门 环境配置 认识Tensorflow

目录 一、环境配置1.Anaconda以及Tensorflow的安装2.CONDA环境安装3.测试是否成功 二、认识TensorFlow1.图 Graph()2.会话 Session()3.张量 Tensor&#xff08;1&#xff09;张量的形状&#xff08;2&#xff09;数据类型张量的动态形状与静态形状 4.张量操作&#xff08;1&…

No9.精选前端面试题,享受每天的挑战和学习

文章目录 从recat源码角度说明下setState流程同源策略限制什么行为computed和watch的区别http和https的区别vue中的route和router的异同点&#xff0c;区别 从recat源码角度说明下setState流程 在 React 的源码中&#xff0c;setState 方法是用于更新组件的状态&#xff08;st…

java中预览pdf或者图片

GetMapping("preview1")ApiOperation(value "根据文件名实现预览功能")public void previewFile1( HttpServletResponse response) throws IOException {String filePath"C:\\Users\\Harbor Lau\\Desktop\\哈哈\\""11月燃油费(公开).pdf&q…

照片如何恢复?试试这3个简单操作!

我的电脑里保存了很多照片&#xff0c;都是对我来说意义重大的&#xff0c;但最近电脑内存不足了&#xff0c;在清理内存时&#xff0c;我不小心把照片也清空了&#xff0c;这些照片应该如何恢复呢&#xff1f;谁有什么好的方法恢复电脑里的照片吗&#xff1f; 可能很多人都会选…

【UnityDOTS 小知识】RequireMatchingQueriesForUpdate与RequireForUpdate

RequireMatchingQueriesForUpdate与RequireForUpdate 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 一、RequireMatchingQueriesForUpdate 将这个特性放置于System类上…

【算法与数据结构】字符串匹配算法

文章目录 一、暴力穷解法二、KMP算法二、BM算法三、Sunday算法四、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、暴力穷解法 思路分析&#xff1a;首先判断字符串是否合法&#xff0c;然后利用for循环&#xff0c;取出…

2024考研408-操作系统 第一章-计算机系统概述学习笔记

文章目录 前言一、操作系统的基本概述1.1、操作系统的概念1.2、操作系统的功能1.2.1、操作系统提供的功能及示例1.2.2、操作系统提供的方便易用服务1.2.2.1、操作系统刚普通用户使用&#xff08;GUI用户界面、命令接口&#xff09;1.2.2.2、给程序员提供的程序接口小总结&#…

Cesium中加载WMS、WMTS、WFS三类服务,并进行点击查询

近期工作中需要使用Cesium加载各类服务&#xff0c;并进行点击查询。故针对不同的服务对加载方法和点击查询方法进行了整理。 一、加载方法 1.1加载WMS export function wmsService(url,layer){let wmsnew Cesium.WebMapServiceImageryProvider({url : url,//如http://106.12…

【Spring Boot】Spring Boot配置文件详情

前言 Spring Boot是一个开源的Java框架&#xff0c;用于快速构建应用程序和微服务。它基于Spring Framework&#xff0c;通过自动化配置和约定优于配置的方式&#xff0c;使开发人员可以更快地启动和运行应用程序。Spring Boot提供了许多开箱即用的功能和插件&#xff0c;包括嵌…

【笔记】微机原理及接口技术4 -- ADC/DAC

模数数模转换器 控制系统中的模拟接口 A/D 转换器 把模拟信号转成数字信号&#xff0c;供微处理器使用&#xff1b; D/A 转换器 输出模拟信号&#xff0c;供外部控制装置使用&#xff1b; D/A 原理 D/A 转换器的主要部件是电阻开关网络 通常是由输入的二进制数的各位控制一些…

EasyCVR如何在不修改分辨率的情况下进行H.265自动转码H.264?

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;可支持多协议、多类型设备接入&#xff0c;在视频能力上&#xff0c;平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、H.265转码、智能分析以及平台级联等。 我们在此前的文章中介绍过…

【Python实战】Python采集某大夫文字数据

前言 今天&#xff0c;有一位粉丝找到我&#xff0c;希望我出一期关于某大夫数据采集的文章&#xff0c;今天&#xff0c;我们就来采集某大夫的问诊数据。 环境使用 python 3.9pycharm 模块使用 requests 模块介绍 requests requests是一个很实用的Python HTTP客户端库&…