比较完整——对字符以及相关数据类型的说明

1. 对字符的处理

1.1 编码

1.1.1 原理

字符数据原理
内存内存数据编码规范显示

1.1.2 代码示例

实际编程中的字符对应:65对应A

#include<iostream>
using namespace std;

int main(){
    cout<<(char)65;
    system("pause");
    return 0;
}

显示结果

字符打印

1.1.3 过程处理

过程处理:真正显示取决于 cout,如果你自己编写那么65可以对应其他的人值,也就是对应的字符值取决于编码规范

注意:万事万物要有编码规范的意识

  • 比如:图片很多都有自己的编码规范PNG、GMP都是自己都独特的编码,那么知道编码是如何就能转换为数字进行操作,而JPG是进行一些压缩,同样的PDF和WORD也是这样,所以对于文件的处理首先应该想到的是编码规范的问题

2. 数据类型

字符数据类型
类型内存占用说明
char1asci字符
wchar_t
不稳定,有时候宽字节优势是utf_16,更加稳定的是char16_t
2宽字节字符
char16_t2utf_16字符
char32_t4utf_32字符

2.1 数据类型的存储原理以及不同文字的处理

char在内存中的处理:char charA{‘A’};把’A’强制转换成了65,其在内存实质还是当做了数字进行处理;

宽字符的处理

  1. 宽字符对中文进行处理使用到了数组的概念
  2. 宽字符用于支持中文初始化时候用L说明他是宽字符类型,需要加入local头文件,以及设置当前字符编码(因为默认的char只是用于支持ascii码,只适应于英文),对应的输出流支持也换成了wcout

2.1.1 代码示例

#include <iostream>
#include <locale>
using namespace std;

int main()
{
    setlocale(LC_ALL,"chs");
    char charA{'A'}; //字母
    char charB{65};  //数字初始化
    wchar_t wcharA{L'我'};
    //char charc{我”};//stray '\346' in program

    charA++;
    std::cout << wcharA << std::endl;

    system("pause");
    return 0;
}

换行:10

由于ascii码中字符数字也是递增进行排序的,所以字符数字也是可以进行排序的

2.2 各数据类型大小和取值范围

2.2.1 整型数据大大小取值

1.有符号
类型名称字节数取值范围位数
signed char1 − 2 7 ( − 128 ) ∼ 2 7 − 1 ( 127 ) -2^7(-128) \sim 2^{7-1}(127) 27(128)271(127)3
short int 或 short2 − 2 15 ( − 32768 ) ∼ 2 15 − 1 ( 32767 ) -2^{15}(-32 768) \sim 2^{15-1}(32 767) 215(32768)2151(32767)5
int4 − 2 31 ( − 2147483648 ) ∼ 2 31 − 1 ( 2147483647 ) -2^{31}(-2 147 483 648) \sim 2^{31-1}(2 147 483 647) 231(2147483648)2311(2147483647)10
long int 或 long4 − 2 31 ( − 2147483648 ) ∼ 2 31 − 1 ( 2147483647 ) -2^{31}(-2 147 483 648) \sim 2^{31-1}(2 147 483 647) 231(2147483648)2311(2147483647)10
long long int 或 long long8 − 2 63 ( − 9.2233720368548 e + 18 ) ∼ 2 63 − 1 ( 9.2233720368548 e + 18 ) -2^{63}(-9.2233720368548e+18) \sim 2^{63-1}(9.2233720368548e+18) 263(9.2233720368548e+18)2631(9.2233720368548e+18)19
2.无符号
类型名称字节数取值范围位数
unsigned char1 0 ∼ 2 8 ( 256 ) 0 \sim 2^8(256) 028(256)3
unsigned short int 或 unsigned short2 0 ∼ 2 16 ( 65536 ) 0 \sim 2^{16}(65 536) 0216(65536)5
unsigned int4 0 ∼ 2 32 ( 4294967296 ) 0 \sim 2^{32}(4 294 967 296) 0232(4294967296)10
unsigned long int 或 unsigned long4 0 ∼ 2 32 ( 4294967296 ) 0 \sim 2^{32}(4 294 967 296) 0232(4294967296)10
unsigned long long int 或 unsigned long long8 0 ∼ 2 64 ( 1.844674407371 e + 19 ) 0 \sim 2^{64}(1.844674407371e+19) 0264(1.844674407371e+19)19

2.2.2 浮点类型

类型名称字节数取值范围位数
float4-/+3.4e+38(精确到6位小数)38
double8-/+1.7e+308(精确到15位小数)308
long double12-/+1.19e+4932(精确到18位小数)4932

2.2.3 调用是对应的常量名(最大最小等。。。)

如果在c++代码中调用这些的关键词

1.表示无符号整数类型的极限值符号
类型名称下限上限
unsigned char0UCHAR_MAX
unsigned short0USHRT_MAX
unsigned int0UINT_MAX
unsigned long0ULONG_MAX
unsigned long long0ULLONG_MAX
2.表示浮点类型的极限值符号
类型名称下限上限
floatFLT_MINFLT_MAX
doubleDBL_MINDBL_MAX
long doubleLDBL_MINLDBL_MAX

2.3 ASCII码对应表

2.3.1 ASCII控制字符

ASCII控制字符
二进制十进制十六进制缩写名称/意义
0000 0000000NUL空字符(Null)
0000 0001101SOH标题开始
0000 0010202STX本文开始
0000 0011303ETX本文结束
0000 0100404EOT传输结束
0000 0101505ENQ请求
0000 0110606ACK确认回应
0000 0111707BEL响铃
0000 1000808BS退格
0000 1001909HT水平定位符号
0000 1010100ALF换行键
0000 1011110BVT垂直定位符号
0000 1100120CFF换页键
0000 1101130DCR归位键
0000 1110140ESO取消变换(Shift out)
0000 1111150FSI启用变换(Shift in)
0001 00001610DLE跳出数据通讯
0001 00011711DC1设备控制一(XON 启用软件速度控制)
0001 00101812DC2设备控制二
0001 00111913DC3设备控制三(XOFF 停用软件速度控制)
0001 01002014DC4设备控制四
0001 01012115NAK确认失败回应
0001 01102216SYN同步用暂停
0001 01112317ETB区块传输结束
0001 10002418CAN取消
0001 10012519EM连接介质中断
0001 1010261ASUB替换
0001 1011271BESC跳出
0001 1100281CFS文件分割符
0001 1101291DGS组群分隔符
0001 1110301ERS记录分隔符
0001 1111311FUS单元分隔符
0111 11111277FDEL删除

2.3.2 完整的ASCII码表

二进制十进制十六进制字符/缩写解释
00000000000NUL (NULL)空字符
00000001101SOH (Start Of Headling)标题开始
00000010202STX (Start Of Text)正文开始
00000011303ETX (End Of Text)正文结束
00000100404EOT (End Of Transmission)传输结束
00000101505ENQ (Enquiry)请求
00000110606ACK (Acknowledge)回应/响应/收到通知
00000111707BEL (Bell)响铃
00001000808BS (Backspace)退格
00001001909HT (Horizontal Tab)水平制表符
00001010100ALF/NL(Line Feed/New Line)换行键
00001011110BVT (Vertical Tab)垂直制表符
00001100120CFF/NP (Form Feed/New Page)换页键
00001101130DCR (Carriage Return)回车键
00001110140ESO (Shift Out)不用切换
00001111150FSI (Shift In)启用切换
000100001610DLE (Data Link Escape)数据链路转义
000100011711DC1/XON (Device Control 1/Transmission On)设备控制1/传输开始
000100101812DC2 (Device Control 2)设备控制2
000100111913DC3/XOFF (Device Control 3/Transmission Off)设备控制3/传输中断
000101002014DC4 (Device Control 4)设备控制4
000101012115NAK (Negative Acknowledge)无响应/非正常响应/拒绝接收
000101102216SYN (Synchronous Idle)同步空闲
000101112317ETB (End of Transmission Block)传输块结束/块传输终止
000110002418CAN (Cancel)取消
000110012519EM (End of Medium)已到介质末端/介质存储已满/介质中断
00011010261ASUB (Substitute)替补/替换
00011011271BESC (Escape)逃离/取消
00011100281CFS (File Separator)文件分割符
00011101291DGS (Group Separator)组分隔符/分组符
00011110301ERS (Record Separator)记录分离符
00011111311FUS (Unit Separator)单元分隔符
001000003220(Space)空格
001000013321!
001000103422"
001000113523#
001001003624$
001001013725%
001001103826&
001001113927
001010004028(
001010014129)
00101010422A*
00101011432B+
00101100442C,
00101101452D-
00101110462E.
00101111472F/
0011000048300
0011000149311
0011001050322
0011001151333
0011010052344
0011010153355
0011011054366
0011011155377
0011100056388
0011100157399
00111010583A:
00111011593B;
00111100603C<
00111101613D=
00111110623E>
00111111633F?
010000006440@
010000016541A
010000106642B
010000116743C
010001006844D
010001016945E
010001107046F
010001117147G
010010007248H
010010017349I
01001010744AJ
01001011754BK
01001100764CL
01001101774DM
01001110784EN
01001111794FO
010100008050P
010100018151Q
010100108252R
010100118353S
010101008454T
010101018555U
010101108656V
010101118757W
010110008858X
010110018959Y
01011010905AZ
01011011915B[
01011100925C\
01011101935D]
01011110945E^
01011111955F_
011000009660`
011000019761a
011000109862b
011000119963c
0110010010064d
0110010110165e
0110011010266f
0110011110367g
0110100010468h
0110100110569i
011010101066Aj
011010111076Bk
011011001086Cl
011011011096Dm
011011101106En
011011111116Fo
0111000011270p
0111000111371q
0111001011472r
0111001111573s
0111010011674t
0111010111775u
0111011011876v
0111011111977w
0111100012078x
0111100112179y
011110101227Az
011110111237B{
011111001247C|
011111011257D}
011111101267E~
011111111277FDEL (Delete)删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值