【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.mfbz.cn/a/890632.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web安全常用工具 (持续更新)

前言 本文虽然是讲web相关工具&#xff0c;但在在安全领域&#xff0c;没有人是先精通工具&#xff0c;再上手做事的。鉴于web领域繁杂戎多的知识点&#xff08;工具是学不完的&#xff0c;哭&#xff09;&#xff0c;如果你在本文的学习过程中遇到没有学过的知识点&#xff0…

《OpenCV计算机视觉》—— 人脸检测

文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器&#xff08;cv2.CascadeClassifier()&#xff09;2.检测图像中的人脸&#xff08;cv2.CascadeClassifier.detectMultiscale()&#xff09; 三、代码实现 一、人脸检测流程介绍 下面是一张含有多个人脸的…

了解高可用架构之前——CAP

CAP定理(布鲁尔定理)&#xff0c;在2000年的ACM PODC上提出的猜想 &#x1f4d3;1 CAP理论 理论描述 第一版&#xff1a;any distributed system cannot guaranty C,A and P simultaneously 对于一个分布式计算系统&#xff0c;不可能同时满足一致性(Consistence)、可用性(Ava…

环境、能源主题会议,斯普林格/ IEEE 出版

&#x1f31f;第四届环境污染与治理国际学术会议 (ICEPG 2024) ✅收录率高&#xff0c;EI稳定检索 【往届见刊后1个月内完成检索】 ✅华北水利水电大学主办&#xff0c;院士、校长、杰青等大咖齐聚 ✔会议时间&#xff1a;2024年10月25-27日 ✔会议地点&#xff1a;郑州东站…

苹果AI科学家研究证明基于LLM的模型存在缺陷 因为它们无法推理

苹果公司人工智能科学家的一篇新论文发现&#xff0c;基于大型语言模型的引擎&#xff08;如 Meta 和 OpenAI 的引擎&#xff09;仍然缺乏基本的推理能力。该小组提出了一个新的基准–GSM-Symbolic&#xff0c;以帮助其他人衡量各种大型语言模型&#xff08;LLM&#xff09;的推…

常见开源组件的详解

文章目录 RPCRPC架构和工作流程为什么有了HTTP还要用RPC底层协议数据格式连接管理错误处理 使用场景常见的RPC框架 Web应用框架主要功能常见的Web应用框架Spring Boot (Java)Django (Python)Express.js (Node.js) Redis主要特点应用场景缓存问题Redis集群架构主从复制Redis Clu…

Fiddler配合wireshark解密ssl

环境&#xff1a; win11&#xff08;wireshark&#xff09;--虚拟机win7&#xff08;Fiddler&#xff09;---虚拟机win7&#xff08;HTTPS站点&#xff09; 软件安装问题&#xff1a; 需要.net环境&#xff0c;NDP461-KB3102436-x86-x64-AllOS-ENU.exe。 安装fiddler后安装下…

Excel:vba实现合并工作表(表头相同)

这个代码应该也适用于一些表头相同的工作表的汇总&#xff0c;只需要修改想要遍历的表&#xff0c;适用于处理大量表头相同的表的合并 这里的汇总合并表 total 是我事先创建的&#xff0c;我觉得比用vba代码创建要容易一下&#xff0c;如果不事先创建汇总表就用下面的代码&…

chattts一步步的记录,先跑起来。

0.下载git工具 Git - Downloads (git-scm.com)https://git-scm.com/downloads Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 1.安装 随意&#xff0c;可以安汉化&#xff0c;也可不安。无所谓 2.建个目录&#xff0c;我的上…

qiankun 主项目和子项目都是 vue2,部署在同一台服务器上,nginx 配置

1、主项目配置 1.1 micro.vue 组件 <template><div id"container-sub-app"></div> </template><script> import { loadMicroApp } from qiankun; import actions from /utils/actions.js;export default {name: microApp,mixins: [ac…

python+appium+雷电模拟器安卓自动化及踩坑

一、环境安装 环境&#xff1a;window11 1.1 安装Android SDK AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 这里面任选一个就可以&#xff0c;最终下载完主要要安装操作安卓的工具adb&#xff0c;安装这个步骤的前提是要…

防火墙的三种工作模式:路由模式、透明模式(网桥)、混合模式

防火墙作为网络安全的核心设备之一&#xff0c;扮演着至关重要的角色。它不仅能够有效防御外部网络的攻击&#xff0c;还能保护内部网络的安全。在如今复杂多样的网络环境下&#xff0c;防火墙的部署和工作模式直接影响着网络安全策略的实施效果。防火墙通常可以工作在三种模式…

如何成为 Rust 核心贡献者?Rust 开发的核​​心是什么?Rust 重要技术专家揭秘

10 月 17 - 18日&#xff0c;由 GOSIM 开源创新汇主办、CSDN 承办的 GOSIM CHINA 2024 将在北京盛大启幕。作为 GOSIM 开源年度大会的第三届盛会&#xff0c;本次活动邀请了 60 多位国际开源专家&#xff0c;汇聚了来自全球百余家顶尖科技企业、知名高校及开源社区的技术大咖、…

衡石分析平台系统-分析人员手册

应用创建​ 用户可以通过多种方式创建应用&#xff0c;不同场景下应用创建方法不同。 新建空白应用​ 新建空白应用是新建一个空的应用&#xff0c;应用中没有数据集和仪表盘。 点击应用创作页面右上方的新建应用&#xff0c;新建空白的分析应用和查询应用。 新建的空白应用…

汽车宣传动画渲染怎么做?云渲染加速汽车动画渲染

在汽车行业&#xff0c;宣传动画已成为展示新车型和技术创新的重要工具。高质量的渲染不仅能够吸引观众的眼球&#xff0c;还能有效传达汽车的性能和美学。随着技术的发展&#xff0c;云渲染技术为汽车宣传动画的渲染提供了新的可能性&#xff0c;大大提高了渲染效率和质量。 第…

区块链-智能合约Solidity编程

文章目录 一、ubuntu安装二、FISCO BCOS安装五、 WeBASE安装5.1 WeBASE简介5.2 节点前置服务搭建5.3 调用HelloWorld合约 七、Solidity极简入门7.1. 值类型7.2. 变量数据存储和作用域7.3. 函数7.4 控制流7.5 数组&映射7.6 结构体7.7 修饰符7.8 事件7.9 面向对象7.10 抽象合…

与鸿蒙同行,Java Solon v3.0 正式发布(向下兼容)

与 HarmonyOS NEXT 10月8日公测同行。Solon &#xff08;开放原子开源基金会&#xff0c;孵化项目&#xff09; v3.0 正式发布&#xff0c; 且将在 2025 年启动华为编程语言 “仓颉” 版开发&#xff08;届时会有 Solon-Java 和 Solon-CJ 两大版本&#xff09;。本次大版本更新…

免费送源码:Java+Springboot+MySQL 水环境检测系统的设计与实现 计算机毕业设计原创定制

摘 要 在我国,水源的污染是不可忽视的问题。对于水质监测进行数据的采集工作,目前主要通过人工实现。因此,部分地区的采集工作,实施起来难度很大,比如恶劣环境和偏僻山区等地。所以,目前对于水质监测的研究,主导方向是建立更加高效完善,智能化的水质监测系统。近几年,无线传感器…

【C++贪心 DFS】2673. 使二叉树所有路径值相等的最小代价|1917

本文涉及知识点 C贪心 反证法 决策包容性 CDFS LeetCode2673. 使二叉树所有路径值相等的最小代价 给你一个整数 n 表示一棵 满二叉树 里面节点的数目&#xff0c;节点编号从 1 到 n 。根节点编号为 1 &#xff0c;树中每个非叶子节点 i 都有两个孩子&#xff0c;分别是左孩子…

java数据库操作-cnblog

创建lib目录&#xff0c;填入jar包 选择 libraries添加lib目录 package nb;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class JDBCtest {private static final String url "jdbc:mysql://localhost:3306/test?c…