【C】C语言常见概念~

C语言常见概念

转义字符

转义字符,顾名思义,转变原来意思的字符
比如

#include <stdio.h> 
int main()
{printf("abcndef");return 0;
}

输出的结果为:
在这里插入图片描述
将代码修改一下:

#include <stdio.h> 
int main()
{printf("abc\ndef");return 0;
}

输出的结果变为:
在这里插入图片描述
\n就是一个转义字符,表示换行

常见的转义字符如下:

\?
在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了
\'
用于表示字符常量’
\"
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符
\a
警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生
\b
退格键,光标回退一个字符,但不删除字符
\f
换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v
\n
换行符
\r
回车符,光标移到同一行的开头
\t
制表符,光标移到下一个水平制表位,通常是下一个4/8的倍数
\v
垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列

下面2种转义字符可以理解为:字符的8进制或者16进制表示形式:

\ddd:d d d表示1~3个八进制的数字
如:\130 表示字符X

\xdd:d d表示2个十六进制数字。
如:\x30 表示字符0

\e
null 字符,代表没有内容,\e 就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0.

三字母词

??) 输出为 ]
??( 输出为 [
例如

#include <stdio.h>
int main(){printf("(are you ok??)");return 0;
} 

输出应为:( are you ok]
但实际:
在这里插入图片描述
因为当前的编译器已经不再支持三字母词

正确的写法应该为:

#include <stdio.h>
int main(){printf("(are you ok\?\?)");return 0;
} 

打印单引号:

错误示范:

#include <stdio.h>
int main(){printf("%c\n",''');return 0;
} 

这是因为中间的单引号与左面的单引号结合成一对
故,应该将中间的单引号转义

#include <stdio.h>
int main(){printf("%c\n",'\'');return 0;
} 

输出结果为一个单引号:
在这里插入图片描述
同理,打印双引号:

#include <stdio.h>
int main(){printf("%c\n",'\"');return 0;
} 

在这里插入图片描述

打印\

当我们想打印:c:\test\ddd\test.c的时候,若编写代码如下:

#include <stdio.h>
int main(){printf("c:\test\ddd\test.c");return 0;
} 

就会发现输出很奇怪:
在这里插入图片描述
这是因为编译器识别的时候,将\当成了转义字符

正确代码如下:

#include <stdio.h>
int main(){printf("c:\\test\\ddd\\test.c");return 0;
} 

这时候,我们就得到了想要的输出:
在这里插入图片描述

\b

#include <stdio.h>
int main(){printf("abcdef");getchar();//读取一个字符 return 0;
} 

此时光标位置:
在这里插入图片描述

添加\b后:

#include <stdio.h>
int main(){printf("abcdef\b");getchar();//读取一个字符 return 0;
} 

在这里插入图片描述

如果在这之后打印一个x:

#include <stdio.h>
int main(){printf("abcdef\b");printf("x");getchar();//读取一个字符 return 0;
} 

则输出:
在这里插入图片描述
会发现:x将f覆盖

\t

#include <stdio.h>
int main(){printf("a\taa\taaa\taaaa\txx");return 0;
} 

输出为:
在这里插入图片描述
可以看出:从开始打印a到打印aa之前,为8个字符

也就是说,a和aa之间跳过了七个字符,aa和aaa之间跳过了六个字符…以此类推

\ddd

#include <stdio.h>
int main(){printf("%c\n",'\130');return 0;
} 

在这里插入图片描述
说明,八进制中130代表X
怎么来的呢?
从末位开始,八进制情况下,分别代表8的0次幂,8的1次幂…依次递增
esp:130:1×64 + 3×8+ 0×1=88, 而ASC码值88对应的就是X字符

\0就是\ddd形式的转义字符

\xdd

#include <stdio.h>
int main(){printf("%c\n",'\x30');return 0;
} 

在这里插入图片描述
十六进制中,30对应的十进制数字,与八进制同理,为:
3×16+0×1=48
而ASC码值为48对应的是0
故打印结果为0

一个练习:

#include <stdio.h>
#include <string.h>
int main(){//int len=strlen("abc");//a b c \0 //strlen统计的是字符串中\0之前的字符个数 ,不算\0 //8进制的数字是0~7组成的//16进制的数字是由0~9+A~F表示(0~15) int len=strlen("c:\test\abc\182\test.c") ;printf("%d",len);return 0;
} 

练习:数一数这个字符串有多少个字符

在这里插入图片描述
故为,18个

但如果将182改为123,会发现,变为16个字符
这是因为:
\123会被视为\ddd的结构从而变为1个字符

语句和语句的分类

C语言的代码是由一条一条的语句构成,C语言中的语句可分为五类
1.空语句
2.表达式语句
3.函数调用语句
4.复合语句
5.控制语句

空语句

#include <stdio.h>
int main(){;return 0;
} 

表达式语句

#include <stdio.h>
int main(){3+4;return 0;} 

函数调用语句

#include <stdio.h>
int main(){printf("hehe");return 0;
} 

复合语句(代码块)

#include <stdio.h>
int main(){{}return 0;
} 

控制语句

#include <stdio.h>
int main(){//if switch for....return 0;
} 

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构: 顺序结构、选择结构、循环结构),它们由特定的语句定义符组成

C语言有九种控制语句。可分成以下三类:
1.条件判断语句也叫分支语句:if语句、switch语句
2.循环执行语句: do while语句、while语句、for语句
3.转向语句: break语句、goto语句、continue语句、return语句

注释

注释是对代码的说明编译器会忽略注释,也就是说,注释对实际代码没有影响。注释是给程序员自己,或者其他程序员看的

好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释当然不写注释可能会让后期阅读代码的人抓狂

注释的2种形式

/**/的形式

第一种方法是将注释放在/* … */之间,内部可以分行

/*   注释    *//*这是一行注释
*/ 

这种注释可以插在行内,但不可以嵌套

/开始注释后,遇到第一个/就认为注释结束了。

//的形式

第二种写法是将注释放在双斜杠 //后面,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。这是C99标准新增的语法。

//这是一行注释int i=1;//这是一行注释 

不管是哪一种注释,都不能放在双引号里面
双引号里面的注释符号,会成为字符串的一部分,解释为普通符号,失去注释作用
注释会被替换成空格

int num2;
int num/*he*/2; 

第二种就会变为

int num 2; 

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

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

相关文章

双目视觉搭配YOLO实现3D测量

一、简介 双目&#xff08;Stereo Vision&#xff09;技术是一种利用两个相机来模拟人眼视觉的技术。通过对两个相机获取到的图像进行分析和匹配&#xff0c;可以计算出物体的深度信息。双目技术可以实现物体的三维重建、距离测量、运动分析等应用。 双目技术的原理是通过两…

SpringBoot基础(五):集成JUnit5

SpringBoot基础系列文章 SpringBoot基础(一)&#xff1a;快速入门 SpringBoot基础(二)&#xff1a;配置文件详解 SpringBoot基础(三)&#xff1a;Logback日志 SpringBoot基础(四)&#xff1a;bean的多种加载方式 SpringBoot基础(五)&#xff1a;集成JUnit5 目录 一、JUnit…

AIGC毕设项目分享:基于RAG的数字人对话系统及其应用

本研究的主要目标是设计并实现一个基于检索增强生成&#xff08;RAG&#xff09;技术的数字人对话系统&#xff0c;旨在提升数字人系统在多轮对话中的上下文管理、情境感知能力以及动态内容生成效果。系统结合了深度学习中的最新大语言模型技术&#xff0c;通过引入RAG框架来增…

K8S配置MySQL主从自动水平扩展

前提环境 操作系统Ubuntu 22.04 K8S 1.28.2集群&#xff08;1个master2个node&#xff09; MySQL 5.7.44部署在K8S的主从集群 metrics-server v0.6.4 概念简介 在K8s中扩缩容分为两种 ●Node层面&#xff1a;对K8s物理节点扩容和缩容&#xff0c;根据业务规模实现物理节点自动扩…

爬虫案例——网易新闻数据的爬取

案例需求&#xff1a; 1.爬取该新闻网站——&#xff08;网易新闻&#xff09;的数据&#xff0c;包括标题和链接 2.爬取所有数据&#xff08;翻页参数&#xff09; 3.利用jsonpath解析数据 分析&#xff1a; 该网站属于异步加载网站——直接网页中拿不到&#xff0c;需要…

MySQL-08.DDL-表结构操作-创建-案例

一.MySQL创建表的方式 1.首先根据需求文档定义出原型字段&#xff0c;即从需求文档中可以直接设计出来的字段 2.再在原型字段的基础上加上一些基础字段&#xff0c;构成整个表结构的设计 我们采用基于图形化界面的方式来创建表结构 二.案例 原型字段 各字段设计如下&…

深入理解线性表--顺序表

目录 顺序表- Seqlist -> sequence 顺序 list 表 顺序表的概念 问题与解答 顺序表的分类 静态顺序表 动态顺序表 问题与解答(递进式) 动态顺序表的实现 尾插 头插 尾删 头删 指定位置插入 指定位置删除 销毁 总结 前言&#xff1a;线性表是具有相同特性的一类数据结构…

2024 年 04 月编程语言排行榜,PHP 排名创新低?

编程语言的流行度总是变化莫测&#xff0c;每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象&#xff1a;PHP的排名再次下滑&#xff0c;创下了历史新低。这种变化对于PHP开发者和整个技术社区来说&#xff0c;意味着什么呢&#xff1f; P…

现代数字信号处理I-P3 MVUE学习笔记

目录 1. 参数估计问题的提出与本质 2. 估计的性质 2.1 Ancillary&#xff08;多余估计&#xff09; 例1&#xff0c;Ancillary估计量 2. Uniformly Optimal 3. Sufficiency充分性 3.1 统计量充分性定义 例2&#xff1a;利用充分统计量定义获取伯努利分布的充分统计量 …

Anaroute - 理论学习(一)

一、贡献&#xff1a; 框架能够在考虑特定约束的同时&#xff0c;高效地完成复杂AMS设计的布线&#xff0c;并实现签署质量的性能。 提出了一种对称性约束的分配算法&#xff0c;根据引脚位置分配合适的网络匹配要求新的引脚聚类策略&#xff0c;以实现规律性的布线模式&…

微知-Bluefield DPU使用flint烧录固件报错MFE_NO_FLASH_DETECTED是什么?MFE是什么?

文章目录 背景一些报错场景MFE是什么&#xff1f;有哪些MFE 背景 在DPU的fw操作flint的时候&#xff0c;很多命令都会报这个错误&#xff1a;MFE_NO_FLASH_DETECTED&#xff0c;早期很疑惑并且猜测MFE是Mellanox Firmware Engine。实际并不是&#xff0c;具体还得走到mellanox…

2014年国赛高教杯数学建模B题创意平板折叠桌解题全过程文档及程序

2014年国赛高教杯数学建模 B题 创意平板折叠桌 某公司生产一种可折叠的桌子&#xff0c;桌面呈圆形&#xff0c;桌腿随着铰链的活动可以平摊成一张平板&#xff08;如图1-2所示&#xff09;。桌腿由若干根木条组成&#xff0c;分成两组&#xff0c;每组各用一根钢筋将木条连接…

2024 第一次周赛

A: 题目大意 骑士每连续 i 天每天会得到 i 个金币&#xff0c;&#xff08;i 1&#xff0c; 2&#xff0c; 3 &#xff0c; …&#xff09;,那么展开看每一天可以得到的金币数&#xff1a;1 2 2 3 3 3 4 4 4 5 5 5 5 5 … 可以发现就是1个1 &#xff0c;2个2, 3个3…,那么我…

php 生成随机数

记录:随机数抽奖 要求:每次生成3个 1 - 10 之间可重复(或不可重复)的随机数,10次为一轮,每轮要求数字5出现6次、数字4出现3次、…。 提炼需求: 1,可设置最小数、最大数、每次抽奖生成随机数的个数、是否允许重复 2,可设置每轮指定数字的出现次数 3,可设置每轮的抽奖…

一维数组的引用

#define SIZE 5 int main(void) { int i 0; int arr[SIZE] { 86,85,85,896,45 };//同理五个数据只是偶然&#xff0c;可能会更多 //输入 for (i 0;i < SIZE;i) { printf("请输入你的第%d个值&#xff1a;",i1); scanf_s(&…

Spark常用RDD算子:transformation转换算子以及action触发算子

文章目录 1. 算子&#xff08;方法&#xff09;介绍2. 常用transformation算子2.1 map 2.2 flatMap2.3 filter2.4 distinct2.6 groupBy2.7 sortBy()2.8 k-v数据[(k,v),(k1,v1)] 3. 常用action算子 1. 算子&#xff08;方法&#xff09;介绍 rdd中封装了各种算子方便进行计算&a…

【Linux网络编程】网络基础 | Socket 编程基础

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

【动手学深度学习】6.3 填充与步幅(个人向笔记)

卷积的输出形状取决于输入形状和卷积核的形状在应用连续的卷积后&#xff0c;我们最终得到的输出大小远小于输入大小&#xff0c;这是由于卷积核的宽度和高度通常大于1导致的比如&#xff0c;一个 240 240 240240 240240像素的图像&#xff0c;经过10层 5 5 55 55的卷积后&am…

自然语言处理问答系统:技术进展、应用与挑战

自然语言处理&#xff08;NLP&#xff09;问答系统是人工智能领域的一个重要分支&#xff0c;它通过理解和分析用户的提问&#xff0c;从大量的文本数据中提取相关信息&#xff0c;并以自然语言的形式回答用户的问题。随着深度学习技术的发展&#xff0c;尤其是预训练语言模型&…

MATLAB智能优化算法-学习笔记(4)——灰狼优化算法求解旅行商问题【过程+代码】

灰狼优化算法(Grey Wolf Optimizer, GWO)是一种基于灰狼社会行为的元启发式算法,主要模拟灰狼群体的捕猎行为(包括围攻、追捕、搜寻猎物等过程)。多旅行商问题(Multi-Traveling Salesman Problem, mTSP)是旅行商问题(TSP)的扩展,它涉及多个旅行商(车辆)从一个起点城…