探秘 C 语言:编程世界的基石与传奇
一、C 语言的前世今生
C 语言诞生于 20 世纪 70 年代,由贝尔实验室的丹尼斯・里奇(Dennis Ritchie)开发。它最初是为了配合 UNIX 操作系统的开发,旨在提供一种高效、灵活且可移植的编程语言。在那个硬件资源有限的年代,C 语言凭借其对硬件的直接操作能力和简洁的语法,迅速成为了系统编程的首选语言。
从发展历程来看,C 语言的出现并非一蹴而就。它的前身是 B 语言,而 B 语言又是基于 BCPL 语言发展而来。丹尼斯・里奇在 B 语言的基础上,对语法进行了改进,引入了数据类型等重要概念,从而诞生了 C 语言。随着 UNIX 操作系统的广泛传播,C 语言也逐渐被更多人所熟知和使用。1989 年,美国国家标准协会(ANSI)制定了 C 语言的第一个标准 ——ANSI C,这为 C 语言的规范化和广泛应用奠定了坚实的基础。
二、C 语言转义字符详解
在 C 语言中,转义字符是一种特殊的字符常量,用于表示一些无法直接通过键盘输入的字符,或者具有特殊含义的字符。转义字符以反斜杠 “\” 开头,后面紧跟一个或多个字符,通过这种组合来实现特定的功能。
常见转义字符类型及作用
- 换行符(\n):在输出时,使光标移动到下一行的开头,常用于格式化输出。例如:
#include <stdio.h>
int main() {
printf("第一行\n第二行");
return 0;
}
上述代码执行后,会在控制台分两行输出 “第一行” 和 “第二行”。
- 制表符(\t):用于在输出时插入一个水平制表位,通常用于对齐文本。比如:
#include <stdio.h>
int main() {
printf("姓名\t年龄\t性别\n");
printf("张三\t20\t男\n");
printf("李四\t22\t女\n");
return 0;
}
运行结果会以表格形式呈现,使各列数据对齐。
- 回车符(\r):将光标移到当前行的开头,但不会换行。例如:
#include <stdio.h>
int main() {
printf("Hello\rWorld");
return 0;
}
输出结果为 “World”,因为 “\r” 将光标移到行首后,“World” 覆盖了 “Hello”。
- 退格符(\b):使光标向左移动一个字符位置,常用于删除前一个字符。例如:
#include <stdio.h>
int main() {
printf("Hello\b World");
return 0;
}
输出结果为 “Hell World”,“\b” 删除了 “o”。
- 反斜杠(\\):用于表示反斜杠字符本身,因为反斜杠在 C 语言中有特殊用途,需要用双反斜杠来表示一个普通的反斜杠。例如:
#include <stdio.h>
int main() {
printf("C:\\Program Files");
return 0;
}
会输出 “C:\Program Files”。
- 单引号(\'):用于表示单引号字符,在字符常量或字符串中,单引号有界定作用,使用\'可输出单引号。例如:
#include <stdio.h>
int main() {
printf("He said, \'Hello!\'");
return 0;
}
输出 “He said, 'Hello!'”。
- 双引号(\"):用于表示双引号字符,在字符串中,双引号界定字符串,使用\"可在字符串中输出双引号。例如:
#include <stdio.h>
int main() {
printf("She said, \"Goodbye!\"");
return 0;
}
输出 “She said, "Goodbye!"”。
- 八进制转义字符(\ooo):\后面跟 1 到 3 位八进制数字,代表一个字符的八进制 ASCII 码值。例如,\101表示字符A,因为101(八进制)对应的十进制是 65,而 65 是字符A的 ASCII 码值。示例代码:
#include <stdio.h>
int main() {
printf("%c", '\101');
return 0;
}
输出字符A。
- 十六进制转义字符(\xhh):\x后面跟 1 到 2 位十六进制数字,代表一个字符的十六进制 ASCII 码值。如\x41也表示字符A,因为41(十六进制)对应的十进制是 65。示例代码:
#include <stdio.h>
int main() {
printf("%c", '\x41');
return 0;
}
同样输出字符A。
转义字符在 C 语言中是非常重要的组成部分,熟练掌握它们的使用,能够帮助开发者更好地控制输出格式、处理特殊字符,使程序更加灵活和强大。
相关文章:
探秘 C 语言:编程世界的基石与传奇
一、C 语言的前世今生 C 语言诞生于 20 世纪 70 年代,由贝尔实验室的丹尼斯・里奇(Dennis Ritchie)开发。它最初是为了配合 UNIX 操作系统的开发,旨在提供一种高效、灵活且可移植的编程语言。在那个硬件资源有限的年代࿰…...
docker:Dockerfile案例之自定义centos7镜像
1 案例需求 自定义centos7镜像。要求: 默认登录路径为 /usr可以使用vim 2 实施步骤 编写dockerfile脚本 vim centos_dockerfile 内容如下: #定义父镜像 FROM centos:7#定义作者信息 MAINTAINER handsome <handsomehandsome.com># 设置阿里云…...
1、语言的本质
语言的本质 1.1 语言的产生生物重演律 1.2 语言的本质1.3 语系1.4 文字的起源汉字的构成和使用 后记 语言是人类传递信息的工具,其本质是信息的载体。 语音和文字是构成语言的两个基本属性,语音是语言承载的物理信号,文字是记录语言的逻辑符…...
学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)
一,概述 半导体存储器是一种可以存储大量二值信息的半导体器件。在电子计算机及一些其他的数字系统的工作过程中,需要对大量的数据进行储存。由于数据处理的数据量和运算速度的要求,因此把存储量和存取速度作为衡量存储器的重要指标。 在电子…...
Scala:统计每个单词出现的个数并打印
目录 问题拆解: 解题步骤: 1. 拆分所有字符串为单词 2. 遍历所有单词并统计 3. 打印结果 基础版代码实现: 代码解释: 输出结果: 为什么这样设计? 继承的APP是个啥? 使用高阶函数式编…...
C++前缀和
个人主页:[PingdiGuo_guo] 收录专栏:[C干货专栏] 大家好,今天我们来了解一下C的一个重要概念:前缀和 目录 1.什么是前缀和 2.前缀和的用法 1.前缀和的定义 2.预处理前缀和数组 3.查询区间和 4.数组中某个区间的和是否为特定…...
图解MOE大模型的7个核心问题并探讨DeepSeekMoE的专家机制创新
原文地址:https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-mixture-of-experts #mermaid-svg-FU7YUSIfuXO6EVHa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FU7YUSIfuXO6EVHa .error-icon{fill…...
SpringBoot项目集成ElasticSearch
1. 项目背景 处于失业找工作的阶段,随便写写吧~ 没啥背景,没啥意义,Java后端越来越卷了。第一学历不是本科,感觉真的是没有一点路可走。 如果有路过的小伙伴,如果身边还有坑位,不限第一学历的话࿰…...
DeepSeek大模型深度解析:架构、技术与应用全景
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 一、大模型时代与DeepSeek的定位1.1 大模型发展历程回顾大模型发展历程时间轴(20…...
SQL AND OR 操作符详解
SQL AND & OR 操作符详解 在SQL(结构化查询语言)中,AND 和 OR 是两种非常重要的逻辑操作符,它们用于在查询条件中组合多个条件。理解并正确使用这些操作符对于编写有效的SQL查询至关重要。 引言 在处理数据库查询时,我们常常需要根据多个条件来筛选数据。AND 和 OR…...
Dubbo+Zookeeper
Apache ZooKeeper 通过当前页面下载Zookeeper 在这里启动zookeeper 可以根据这个页面简单学习一下,但是没有集成mysql,也会出现一些报错,且在这之后我们要使用的管理页面是vue的dubbo-admin dubbo学习三:springboot整合dubbozo…...
从源到目标:深度学习中的迁移学习与领域自适应实践
引言:数据驱动的智能时代与迁移挑战 在深度学习快速发展的今天,模型训练对数据量和质量的依赖成为核心瓶颈。面对新场景时,标注数据不足、数据分布差异等问题常导致模型性能骤降。迁移学习(Transfer Learning)与领域自…...
从厨电模范到数字先锋,看永洪科技如何助力方太集团开启数字新征程
在数字化洪流席卷全球的宏大背景下,企业转型升级的紧迫性与重要性日益凸显,成为驱动行业进步的关键引擎。在这一波澜壮阔的转型浪潮中,方太集团——厨电领域的璀璨明珠,以其前瞻性的战略视野和不懈的创新精神,携手数据…...
Redis大key
Redis大key基本概念,影响 Redis 大 key 指在 Redis 中存储了大量数据的键,它会对 Redis 的性能和内存管理产生影响。 大key的定义与value的大小和元素数量有关,但这个定义并不是绝对的,而是相对的,具体取决于系统的使用…...
在 Apache Tomcat 中,部署和删除项目
在 Apache Tomcat 中,部署和删除 WAR 文件是常见的操作。以下是详细步骤: 1. 删除 WAR 文件 (1) 停止应用 进入 Tomcat 的管理界面(默认地址:http://localhost:8080/manager/html)。 找到需要删除的应用,…...
前端基础之组件自定义事件
我们可以通过使用给组件绑定事件,当组件触发该事件时,就能进行值得返回 我们可以使用v-on属性来给子组件绑定自定义事件,此时该事件就会存在vc中,然后通过this.$emit来触发绑定的事件, 这样就能实现不需要app.vue来给子…...
在 Docker 中,无法直接将外部多个端口映射到容器内部的同一个端口
Docker 的端口映射是一对一的,即一个外部端口只能映射到容器内部的一个端口。 1. 为什么不能多对一映射? 端口冲突: 如果外部多个端口映射到容器内部的同一个端口,Docker 无法区分外部请求应该转发到哪个内部端口,会…...
基于DeepSeek(本地部署)和RAGFlow构建个人知识库
总结自视频(很强的小姐姐视频,讲解清晰明了):【知识科普】【纯本地化搭建】【不本地也行】DeepSeek RAGFlow 构建个人知识库_哔哩哔哩_bilibili 1. 背景 deepseek官方网页版也虽然很强,能够满足绝大部分需求…...
学习工具的一天之(burp)
第一呢一定是先下载 【Java环境】:Java Downloads | Oracle 下来是burp的下载 Download Burp Suite Community Edition - PortSwigger 【下载方法二】关注的一个博主 【BurpSuite 安装激活使用详细上手教程 web安全测试工具】https://www.bilibili.com/video/BV…...
2025-03-05 学习记录--C/C++-PTA 习题5-8 空心的数字金字塔
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 二、解题步骤 ⭐️ 下面以n5举例:🦋 第1步 🎀、外层循环(从1到…...
C++课程设计【宿舍管理查询软件】
宿舍管理查询软件 一、题目描述二、源码以及说明宿舍管理查询软件设计与实现1. 系统设计思路1.1 功能需求1.2 数据结构2. 系统实现3. 代码说明3.1 数据结构3.2 功能实现3.3 文件存储4. 示例运行输入输出5. 总结其他QT文章推荐一、题目描述 (一)问题描述 为宿舍管理人员编写一…...
Stable Diffusion模型采样方法与参数配置详解(含步数及画风适配表)
Stable Diffusion模型采样方法与参数配置详解(含步数及画风适配表) 以下为当前主流采样方法的性能对比及参数配置建议,结合显存占用、生成速度、适用场景等维度分类总结: 一、采样方法对比表 采样方法推荐步数显存占用生成速度…...
极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【三】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
vue+neo4j 四大名著知识图谱问答系统
编号: D039 视频 vueneo4j四大名著知识图谱问答系统 技术架构 vuedjangoneo4jmysql技术实现 功能模块图 问答:基于知识图谱检索、支持图多跳、显示推理路径 姜维的师傅的主公的臣是谁: 马谡 知识图谱:四大名著总共4个图谱 红楼梦图谱 …...
【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别
1. 什么是智能体 将大语言模型作为一个推理引擎。给定一个任务, 智能体自动生成完成任务所需步骤, 执行相应动作(例如选择并调用工具), 直到任务完成。 2. 先定义工具:Tools 可以是一个函数或三方 API也…...
基于eRDMA实测DeepSeek开源的3FS
DeepSeek昨天开源了3FS分布式文件系统, 通过180个存储节点提供了 6.6TiB/s的存储性能, 全面支持大模型的训练和推理的KVCache转存以及向量数据库等能力, 每个客户端节点支持40GB/s峰值吞吐用于KVCache查找. 发布后, 我们在阿里云ECS上进行了快速的复现, 并进行了性能测试, ECS…...
Vue的简单入门 三
目录 侦听器 watch 注意 表单输入绑定 v-model v-model修饰符编辑 lazy number Trim 模板引用 组件组成 组件引用三步走 组件的嵌套关系 header Main Aside Aritice Item App.vue组件引入三个子组件 组件的注册方式 全局注册组件的方法 (1) Vue 2 语…...
指纹细节提取(Matlab实现)
指纹细节提取概述指纹作为人体生物特征识别领域中应用最为广泛的特征之一,具有独特性、稳定性和便利性。指纹细节特征对于指纹识别的准确性和可靠性起着关键作用。指纹细节提取,即从指纹图像中精确地提取出能够表征指纹唯一性的关键特征点,是…...
使用wifi连接手机adb进行调试|不使用数据线adb调试手机|找应用错误日志和操作日志
手机在开发者选项里要开启无线调试 在手机设置中查看WiFi的IP地址 设置 -> WLAN -> 已连接的WiFi -> IP地址 使用手机的IP地址连接 adb connect 192.168.1.12:xxxxx 检查连接状态 adb devices 断开特定设备 adb disconnect 192.168.x.x:xxxxx 断开所有设备 …...
STM32——串口通信 UART
一、基础配置 Universal Asynchronous Receiver Transmitter 异步,串行,全双工 TTL电平 :高电平1 低电平0 帧格式: 起始位1bit 数据位8bit 校验位1bit 终止位1bit NVIC Settings一栏使能接受中断。 之前有设置LCD,…...
