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

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

一.通常理解

在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码表最大意义就是把二进制序列翻译给人看

特殊符号——双引号和单引号(字符和字符串)相关推荐

  1. (双引号)与 ' '(单引号)的区别

    " "(双引号)与 ' '(单引号)的区别 还是回到我们的command line来吧 经过前面的学习,应该很清楚当你在shell prompt后面敲打键盘.直到按下enter的时 ...

  2. linux终端中书名号,Linux双引号、单引号和反向单引号

    Linux里的双引号.单引号和反向单引号有不同的用法,不好记忆,这里总结一下. 单引号'' 单引号是一个强引用的符号.什么意思呢?它忽略了所有的特殊符号,比如$.\这样的符号,单引号里的内容全部看做普 ...

  3. shell 脚本中双引号、单引号、反引号的区别,其他命令

    如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @ 通常make执行的命令如果出错(该命令的退出状态非0)就立刻终止 ...

  4. oracle数据库--Oracle双引号和单引号的区别小结

    注意: 在取别名,某些to_char中,以及创建表空间名字 还有创建用户的密码时,这些时候需要使用双引号.双引号里面的内容是严格区分大小写,单引号则不用,系统自动翻译成大写. 其他一些情况如下: 一般 ...

  5. JavaScript 中双引号、单引号和反引号的区别

    关注微信公众号:前端充电宝,获取最新原创文章: 在 JavaScript 中,单引号('')和双引号("") 经常用于创建字符串.通常情况下,使用双引号或单引号没有区别,它们最后都 ...

  6. Shell 双引号和单引号的区别

    1.字符串变量定义的三种方式 Shell在使用的过程中,经常会使双引号或者单引号将字符串括起来,也可以不使用引号来定义字符串变量.示例如下: str1="testString" # ...

  7. mysql中双引号和单引号有什么区别

    mysql中双引号和单引号有什么区别 前2天看到有人问,mysql中双引号和单引号有什么区别? 希望大家可以关注下公众号,支持一下,鞠躬感谢~ 我就直接po代码和截图了,如下 select * fro ...

  8. Linux shell命令中双引号与单引号嵌套的问题

    addr="192.168.0.111" echo "'$addr'" 结果为 '192.168.0.111' echo '"$addr"' ...

  9. 这就要从双引号和单引号的作用讲起:

    这就要从双引号和单引号的作用讲起: 双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出.例如: $abc='I love u'; echo $abc // ...

最新文章

  1. 碾压Bert?“屠榜”的XLnet对NLP任务意味着什么
  2. 专家点评Nature Plants | 中科院微生物所郭惠珊研究组揭示土传病原菌逃避寄主免疫的新机制...
  3. 深耕大数据市场,所问数据打造深度学习数据分析与预测引擎
  4. python课程是学什么的-机器学习最好的课程是什么?
  5. E2. 比昨天更多的棒棒糖 (Hard)
  6. 用数组存储循环序号的数据
  7. Failed to find any matching files for /tmp/resnet_v1_50.ckpt
  8. [NPOI2.0] 使用NPOI读取和导出Excel文件
  9. 基于应用程序级的Apache认证配置(普通认证篇)
  10. Rust───crates 国内镜像源配置
  11. 【故障分析】基于matlab轴承故障分析(时频图+功率谱)【含Matlab源码 922期】
  12. axvspan函数--Matplotlib
  13. MATLAB通信系统建模
  14. 基于 WebGL 3D 的 HTML5档案馆可视化管理系统
  15. iphone开发 加速计
  16. Golang基础(1)
  17. 兼职平台java设计_基于jsp的高校兼职平台-JavaEE实现高校兼职平台 - java项目源码...
  18. Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n
  19. 课程笔记 # 网络安全
  20. 安卓手机刷twrp和magisk

热门文章

  1. 机器学习基础模型回顾
  2. AP核MAILBOX地址的初始化和启动过程(基于ARM64 的 APCI Parking protocol)
  3. 中国近三年上市公司信息统计(主板、创业板、科创板)-web数据可视化(d3.brush-时间选择器)
  4. Spring框架(二)Spring控制反转IoC详解
  5. java基础6 面向对象的详解
  6. 计算机英语中liabilities,中国会计科目中英文对照(含科目代码)
  7. “一部到位”的Magic V,荣耀搅动折叠屏风云
  8. 嵌入式本地和远程升级程序的方法
  9. java 计算器算法_计算器算法
  10. 电商巨头的智能家居大战