[经验分享]

C语言char类型与int类型的转化

[复制链接]
3456|73
手机看帖
扫描二维码
随时随地手机跟帖
uptown|  楼主 | 2024-1-21 21:13 | 显示全部楼层 |阅读模式
char和int的转换有两种方式,这两种方式适合于在输出时使用
最简单的方法就是利用ASSCII码的差值,直接用char的值减去‘0’就行了
eg:char a = '9';int a_ = a-'0';另一个就是要利用c语言的库函数来解决
附ASSCII编码表
ASCII控制字符[color=rgba(0, 0, 0, 0.75)]
二进制十进制十六进制缩写可以显示的表示法名称/意义
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删除


ASCII可显示字符[color=rgba(0, 0, 0, 0.75)][td]
二进制十进制十六进制图形
0010 00003220(空格)(␠)
0010 00013321!
0010 00103422"
0010 00113523#
0010 01003624$
0010 01013725%
0010 01103826&
0010 01113927
0010 10004028(
0010 10014129)
0010 1010422A*
0010 1011432B+
0010 1100442C,
0010 1101452D-
0010 1110462E.
0010 1111472F/
0011 000048300
0011 000149311
0011 001050322
0011 001151333
0011 010052344
0011 010153355
0011 011054366
0011 011155377
0011 100056388
0011 100157399
0011 1010583A:
0011 1011593B;
0011 1100603C<
0011 1101613D=
0011 1110623E>
0011 1111633F?
0100 00006440@
0100 00016541A
0100 00106642B
0100 00116743C
0100 01006844D
0100 01016945E
0100 01107046F
0100 01117147G
0100 10007248H
0100 10017349I
0100 1010744AJ
0100 1011754BK
0100 1100764CL
0100 1101774DM
0100 1110784EN
0100 1111794FO
0101 00008050P
0101 00018151Q
0101 00108252R
0101 00118353S
0101 01008454T
0101 01018555U
0101 01108656V
0101 01118757W
0101 10008858X
0101 10018959Y
0101 1010905AZ
0101 1011915B[
0101 1100925C\
0101 1101935D]
0101 1110945E^
0101 1111955F_
0110 00009660`
0110 00019761a
0110 00109862b
0110 00119963c
0110 010010064d
0110 010110165e
0110 011010266f
0110 011110367g
0110 100010468h
0110 100110569i
0110 10101066Aj
0110 10111076Bk
0110 11001086Cl
0110 11011096Dm
0110 11101106En
0110 11111116Fo
0111 000011270p
0111 000111371q
0111 001011472r
0111 001111573s
0111 010011674t
0111 010111775u
0111 011011876v
0111 011111977w
0111 100012078x
0111 100112179y
0111 10101227Az
0111 10111237B{
0111 11001247C|
0111 11011257D}
0111 11101267E~


使用特权

评论回复
tpgf| | 2024-2-2 10:20 | 显示全部楼层
int用来定义整型变量,char用来定义字符型变量

使用特权

评论回复
coshi| | 2024-2-2 10:53 | 显示全部楼层
在C语言中,char类型占1一个字节,而汉子占2个字节,所以不能存储

使用特权

评论回复
qcliu| | 2024-2-3 09:58 | 显示全部楼层
将一个整型常量放到一个字符变量中,实际就是把以该整型常量表示的ASCII码放到内存单元中。(ASCII码是以十进制整数表示的)
将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是把该字符的相应ASCII代码放到存储单元中。

使用特权

评论回复
drer| | 2024-2-3 10:30 | 显示全部楼层
int 可以用字符常量赋值,char也可以用整型常量赋值,它们之间的桥梁就是ASCII码,因为字符是与ASCII一一对应的

使用特权

评论回复
kxsi| | 2024-2-3 11:11 | 显示全部楼层
char i = 1;则i的ASCII就是1,在内存中就是0 0 0 0 0 0 0 1
char i = ‘1’;则i的ASCII就是字符‘1’的ASCII码49,就是0 0 1 1  0 0 0 1

使用特权

评论回复
wiba| | 2024-2-3 11:47 | 显示全部楼层
这俩数据类型 在不同的语言中的差别应该还是有所不同的

使用特权

评论回复
primojones| | 2024-2-3 23:01 | 显示全部楼层
在进行char类型和int类型相互转换

使用特权

评论回复
bestwell| | 2024-2-6 11:33 | 显示全部楼层
当将有符号的char类型转换为int类型时,需要注意符号扩展。如果char类型为有符号,那么在转换为int类型时,高位字节将被填充为原始值的符号位。例如,如果char类型的值为127,转换为int类型后,高位字节将被填充为0,结果为127。但如果char类型的值为-1,转换为int类型后,高位字节将被填充为1,结果为-1。

使用特权

评论回复
lzbf| | 2024-2-6 15:36 | 显示全部楼层
如果 int 类型的值超出了 char 类型的范围(-128到127对于有符号的 char),那么在转换过程中会发生数据截断。这可能会导致一些意想不到的结果。

使用特权

评论回复
cemaj| | 2024-2-6 16:50 | 显示全部楼层
字符在内存中通常以ASCII码的形式存储。因此,如果你把一个整数值存储在一个字符变量中,它会被解释为对应的ASCII码值。

使用特权

评论回复
robertesth| | 2024-2-6 21:30 | 显示全部楼层
如果char和int用于枚举类型(enum),需要注意枚举值的大小和范围。枚举类型可以隐式转换为int类型,但需要注意枚举值是否超过int的范围。

使用特权

评论回复
houjiakai| | 2024-2-6 22:19 | 显示全部楼层
当需要处理的字符串中含有非数字字符时,使用atoi函数可能不合适,因为它会停止转换在第一个非数字字符处。在这种情况下,strtol函数可能是更好的选择,因为它可以处理更复杂的转换,并能够检测转换过程中的错误。

使用特权

评论回复
saservice| | 2024-2-6 23:38 | 显示全部楼层
C语言提供了多种转换方法              

使用特权

评论回复
sdCAD| | 2024-2-7 00:41 | 显示全部楼层
char类型在C语言中通常占用1字节(8位),而int类型通常占用4字节(32位)。这意味着int类型的数值范围远大于char类型。在将char转换为int时,需要注意目标int变量是否足够大以容纳整个char值。

使用特权

评论回复
1988020566| | 2024-2-7 01:54 | 显示全部楼层
在某些系统中,char 可能被视为有符号或无符号类型。如果 char 是无符号类型,它的值将转换为 int 类型的正数。如果 char 是有符号类型,它的值将转换为 int 类型的负数。这意味着在一个负的 char 值被转换为 int 时,结果将是一个更大的正数,因为 int 类型不能表示负的补码。

使用特权

评论回复
pmp| | 2024-2-7 10:17 | 显示全部楼层
char类型的精度较低,而int类型的精度较高。在进行转换时,可能会丢失部分数据精度。

使用特权

评论回复
updownq| | 2024-2-7 15:12 | 显示全部楼层
将char类型转换为int类型时,如果char类型的值超出了int类型能够表示的范围,低位的字节将保持不变,而高位的字节则会变成0,这可能导致信息的丢失。

使用特权

评论回复
wilhelmina2| | 2024-2-7 16:01 | 显示全部楼层
char类型通常占用1个字节,而int类型通常占用4个字节

使用特权

评论回复
mickit| | 2024-2-7 17:22 | 显示全部楼层
如果程序处理的是多字节字符集,那么简单的类型转换可能不足以正确处理字符编码。在这种情况下,应使用适当的函数库来进行字符串和编码相关的操作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

3494

帖子

2

粉丝