特殊符号——双引号和单引号

news/2025/2/12 15:27:24/

特殊符号——双引号和单引号

  • 一.通常理解
  • 二.一般使用
  • 三.特殊使用
  • 四.为何计算机需要字符

在这里插入图片描述

一.通常理解

在c语言中,我们通常认为双引号保存的是字符串,单引号里保存的是字符。这里也没什么好说的,说一说它们的细微的一些地方

二.一般使用

在这里插入图片描述

接下来我们可以把它们每个大小都打印出来

在这里插入图片描述

看到这,前面两个大家可能都觉得正常(但凡双引号里都别忘了加上反斜杠0,一般它不应该被称为有效元素,应该是结束的标志符,但它依然占一个字节),但到第三个时发现了问题,字符不应该是1个字节吗?这里怎么显示4个字节啊?接下来就讲解这个现象

在c99标准中,‘a’被叫做整形字符常量,被看作是int类型,所以它的大小就应该是4个字节,那可能又有疑问了,那为什么char类型的明明也是整形字符常量,结果却是一个字节呢?。

在这里插入图片描述

这其实是 因为发生了截断。计算机在解释‘c’时其实时解释为4个字节,但放入char类型里时,被截断为1个字节。这也印证了我们常说的字符其实就是整形(当然以上解释是在c语言中,如果在c++中,‘c’就被解释为1个字节)

三.特殊使用

使用一

如果我们引号里什么都没有,那能编过吗?

在这里插入图片描述

由上可以看出单引号里什么都不加是不能通过的,但双引号里什么都不加是能通过的。这是因为双引号里即使什么都不写还是有反斜杠0,而单引号里就真的什么都没有,我们可以看看它的报错

在这里插入图片描述

同样我们也可以看看它的大小

在这里插入图片描述

大小为1,刚好对应一个反斜杠0

使用二

在这里插入图片描述

我们常用char类型来定义一个字符,但如果我们在里面写两个三个四个字符,它依然不会报错。但当超过四个字符后它就会报错。好奇怪呀。

这里其实上文已经有过讲解,还是整形字符常量的问题。因为编译器在识别单引号时,其实就是按整形来扩充的,也就是说单引号内有4个字节大小的空间。那么如果你写的字符在4个以内编译器是不会报错的,但当超过4个以后,空间就会不够,自然就报错了

我们也可以看看它打印出来是什么样的

在这里插入图片描述

编译器其实打印的是最后一个字符(在VS内)。这是因为编译器永远是从最低的地址开始拿的,具体是右边最低还是左边最低就要看编译器是大端还是小端。VS是小端,所以右边是最低的

四.为何计算机需要字符

在这里插入图片描述

ascll码表是随着我们计算机发展而发展的。众所周知,计算机内部存的是二进制(当然最早还是10进制,后来发现不行),在早期还没有ascll码这个概念时,程序员还不叫程序员,叫做科学家。因为只有他们才能翻译一大串的二进制序列。所以ascll码表就应运而生了

ascll码表其实本质上就是对计算机内部的一种映射关系。计算机就在内部直接转换后显示在显示屏上,也就是做了原来科学家的翻译工作(ascll码表本质对计算机毫无影响,只是为了方便人理解),所以我们显示屏上显示的全是字符,像1234,其实就是1字符,2字符,3字符和4字符组成的并非我们所理解的一千两百三十四

总结:ascll码表最大意义就是把二进制序列翻译给人看
在这里插入图片描述


http://www.ppmy.cn/news/3691.html

相关文章

华为机试 - 找到比自己强的人数

题目描述 给定数组[[2,1],[3 2]],每组表示师徒关系,第一个元素是第二个元素的老师,数字代表排名,现在找出比自己强的徒弟。 输入描述 无 输出描述 无 用例 输入[[2,1],[3,2]]输出[0,1,2]说明输入: 第一行数据[2,1]表示排名第 2 的员工是排名第 1 员工的导师,后面的数据…

ElasticSearch 调优

第一部分:调优索引速度 第二部分:调优搜索速度 第三部分:通用的一些建议 英文原文:https://www.elastic.co/guide/en/elasticsearch/reference/current/how-to.html ES发布时带有的默认值,可为es的开箱即用带来很好的…

2023年pmp的考试时间是什么时候?

PMP 考试一年是有四次考试,分别是 3 月、6月、9月、12月,不出意外的话就是这几个月了,提前 2 个月开始报名,但还是要关注PMI/基金会官网的信息,以官网的消息为准。 一、报考条件 报考条件其实挺简单的,最核…

JavaScript高级 |彻底搞懂原型对象

本文已收录于专栏⭐️ 《JavaScript》⭐️ 学习指南:对象的原型函数的原型new操作符将方法放原型里constructor总结梳理原型对象内存表现完结散花参考文献对象的原型 JavaScript 当中每个对象都有一个特殊的内置属性[[prototype ]] ,这个特殊的对象可以指向另外一个…

高并发编程之ThreadPool 线程池

10 ThreadPool 线程池 10.1 线程池简介 线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销, 进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理 者分配可并发执…

Django期末考试复习

目录一、Django复习内容二、建立一个项目1.进入环境2.建立项目3.打开文件三、建立APP1.进入View文件2.进入Django环境3.建立App四、注册超级用户1.INSTALLED_APPS配置2.建立模型3.数据库的迁移4.进入环境注册超级用户5.开启服务器五、配置数据库一、Django复习内容 二、建立一个…

Python语言eval与exec的使用区别

最近开发中用到了eval()与exec()这两个函数,不知道在哪种场景下用哪个函数,所以就翻了下Python的文档。这里就来简单说一下这两个函数的区别 eval函数 函数的作用: 计算指定表达式的值。也就是说它要执行的Python代码只能是单个运算表达式&a…

为什么微服务一定要有网关呢

一、什么是服务网关 服务网关 路由转发 过滤器1、路由转发:接收一切外界请求,转发到后端的微服务上去; 2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过…