当前位置: 首页 > news >正文

数据与C(ASCII码,char)

 

目录

一.ASCII码讲解

二.非打印字符(转义字符)

三.扩展小知识

一.ASCII码讲解

char类型用于存储字符,从技术层面看,char时整数类型,因为char类型实际上存储的是整数而不是字符。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符,美国常用的编码就是ASCII编码

列如,在ASCII码中,整数65代表大写字母A。因此,存储字母A实际上存储的是整数65(许多IBM的大型主机使用的另一种编码-EBCDIC,原理差不多)

标准的ASCII码的范围是0~127,只需要7位二进制数即可表示。而通常char类型被定义为8位的存储单元,所以容纳标准ASCII码绰绰有余

而.char类型变量和打印(%c占位符)

char response = 'A'

这里被单引号括起来的A我们一般称为字符变量,记住不能给 A或“A”,因为A是一个变量,“A”是一个字符串(”A“,里面其实包含两个字符,一个A和\0,字符串都是以\0结束)

这里可以很好的看出来我们先输入一个字符给到ch内存位置上,然后用%c和%d,分别打印变量,就会得到ch和ch的ASCII码65。从这里也可以看出来printf()函数中的转换说明决定了数据的显示方式,而不是数据的存储方式。

二.非打印字符(转义字符)

活跃位置:指的是显示设备(屏幕,电传打字机,打印机等)中下一个字符将要出现的位置,而想\b,\f,\n,\r,\t,\v则会移动活跃位置。

如果你在文本行输入一个a后,活跃位置就会跳到下一个即将输入的位置上。

单引号只适用于字符,数字和标点符号,但浏览ASCII表可以注意到,有些ASCII字符是打印不出来的,这里我们一般就要用到转移序列了

\a:警报铃声,运行响一下

\b:退格(活跃位置往前走,跑到a的位置上)

\f:换页(活跃位置跳到下一页,不过这个效果只能在打印机上才能出现效果)

\n:换行(活跃位置移动到下一行开始位置)

\r:回车(活跃位置跳到行的开头)

\t:水平制表符(活跃位置移到下一个水平制表点。一般位第1,9,17,25个字符的位置)

\v:垂直制表符(活跃位置移到下一个垂直制表点,不过这个效果只能在打印机上才能出现效果)

\\:放斜杠(\):为了和转义字符的反斜杠区分开

\':单引号:为了和单引号括起来的字符常量区分开

\":双引号:为了和双引号括起来的字符串区分开

\0oo:八进制数:为了在双引号之内使用数字表示ASCII表中的符号和效果。

\xhh:十六进制数:为了在双引号之内使用数字表示ASCII表中的符号和效果

下面我们来看一个例子

转义字符练习源代码:

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){float salary;printf("\07Enter your desired monthly salary:\x7");        //\07和\0x7都相当于ASCII码为7的\a;printf("$_______\b\b\b\b\b\b\b");scanf("%f", &salary);printf("\n\t$%.2f a month is $%.2f a year", salary, salary * 12);printf("\rGee!\n");return 0;}

第一行

printf("\07Enter your desired monthly salary:\x7");

运行响一下

第二行

printf("$_______\b\b\b\b\b\b\b");

7个退格字符使光标左移7个位置,既把光标移至7个下划线字符的前面,紧跟着美元符号后面。但通常,退格符不会擦除退出所经过的字符,所以当我输入4800时,后面三个_字符还在。

第四行

printf("\n\t$%.2f a month is $%.2f a year", salary, salary * 12);

这里主要就是\t水平制表符跳到下一个制表点,我这里是第九个字符位置(第九列)

第五行

printf("\rGee!\n");

\r把光标移动到当前行的开头。

三.扩展小知识

C语言将字符常量其实视为int类型而非char类型(这个其他我在整数存储章节也有提过)。所以当我们把字符存储在32位存储单元时,它只用了8位存储单元,且最后取用的时候,也只用最后八个存储单元的数据。我们来看个例子,

这里大家稍微了解下就好了


好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

 

http://www.lryc.cn/news/2292.html

相关文章:

  • 第一个C语言代码(visual studin创建调试以及项目文件功能讲解)
  • VIF原理
  • nginx相关反爬策略总结笔记
  • 【Vue3】电商网站吸顶功能
  • HOMER docker版本安装详细流程
  • 【数据结构】单向链表的练习题
  • 我的企业需要一个网站吗?答案是肯定的 10 个理由
  • CHI协议定义的NOC组件
  • Python+Flask+MySQL开发的在线外卖订餐系统(附源码)
  • OpenStack云平台搭建(4) | 部署Placement
  • GNN图神经网络原理解析
  • BI-SQL丨ALL、ANY、SOME
  • 从0到0.1学习 maven(三:声明周期、插件、聚合与继承)
  • 【直击招聘C++】2.5 this指针
  • spark数据清洗练习
  • Android 12首次开机启动Launcher前黑屏问题解析
  • 使用 LSSVM 的 Matlab 演示求解反常微分方程问题(Matlab代码实现)
  • 动态规划-背包问题
  • 计算24点与运算符重载
  • MES系统智能工厂,搭上中国制造2025顺风车
  • 【LeetCode】每日一题(1)
  • SpringCloud-Netflix学习笔记11——Hystrix实现服务降级
  • Oracle Dataguard(主库为 Oracle rac 集群)配置教程(03)—— 创建 dataguard 数据库之前的准备工作
  • 零代码做分析报表的bi软件才是好软件
  • linux ALSA 驱动架构
  • JDK 8 JVM内存结构详解
  • 黑马程序员 Linux 教程
  • 文件操作 -- IO
  • FPGA解析串口协议帧3.0版本,增加了错误重发功能,提供仿真文件以及源码
  • 365天深度学习训练营 第P6周:好莱坞明星识别