C++中的int和char之间的转换问题

 我来答
连素欣崔颖
2019-05-31 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:597万
展开全部
首先你要清楚,在C++中int型占4个字节,而char类型只占1个字节,char类型是可以转化为int类型的,但int类型不一定可以转换为char类型。
我对你这个问题的理解是,你想将0到9之间的数字转化为char类型的,或是将'0'-'9'之间的字符转化为int型的数字。
你如果要用强制转换的话可以这样:(0的ASCII码是48)
int
a;
char
b;
a=(int)(b-48);或b=(char)(a+48);
//这样转化的前提是a的范围是0-9,b的范围是'0'-'9'
在实际运用中,在整型和字符型之间转化用得较多的应该要算int型与char
*类型之间的转化了。这个时候可以用atoi(字符型转整型,可以分开理解a
to
i)和itoa(整型转字符型,i
to
a),如:
int
a=11111
char*
b="33333";
a=atoi(b);//将整型转化为字符串

itoa(a,b,10);//将字符串转化为整型,最后一个参数是进制,在这里是10进制
裔巧曼俎经
2019-02-25 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:843万
展开全部
第一,int型和char型的长度不一样。int占4个字节而char只占一个字节。
第二,char型可以直接赋值给int型,值的大小是char字符对应的ASCII码值,例如:
b
=
'a';
a
=
b;
则a的值应该是97。
第三,int型也可以直接赋值给char型,同样是按照ASCII码来的,但由于int长度比char长,因此只有在int的值处在ASCII码范围内的时候转换后的值才是有意义的,如果超过范围则转换出来的值可能是不定的(根据编译器不同而不同),在VC6下是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1b2f7e605f7
2019-08-23 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:956万
展开全部
目前绝大多数编译器,int
型数据占
4
字节,
char
型占
1
字节。进行不同数据的强制转换其实就是数据占用字节扩充或者截断。
比如
int
a;
char
b;
a=(int)b;
b=(char)a;

b
转换成
int
型数据就是将
b
扩充
3
个字节;而将
a
转换成
char
型数据就是将
a
的最低位字节截取出来。因此,将数据由值域较宽类型强制转换到值域较窄类型时,有可能出现数据信息丢失。
你说的转换错误其实不然,因为
char
型数据在机器里通过
ASCII
码存储,也就是用一个整数存储的。譬如字符
'
0
',对应的
ASCII
码的十进制数

48,因此强制转换成
int
后,是
48,而不是
0
。要想将字符
'0'
转换成整数
'0',就要使用你所说的
a
=
b
-
'0';
或者
a
=
b
-
48;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永蕴秀良宁
2019-08-03 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.2万
采纳率:26%
帮助的人:947万
展开全部
这要用到ASCII码的知识,粗略讲一下
字符'0'的ASCII码为48,然后是'1'
'2'
'3'
...
'9'
字符'
'(空格)的ASCII码为32.
字符'A'的ASCII码为65,然后是'B'
'C'
...
'Z'
字符'a'的ASCII码为97,然后是'b'
'c'
...
'z'
所以,把一个数字字符ch,转为一个整数,就是ch-'0'当然ch-48也行
因为C和C++中,字符和整型是一样的,可以隐式转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喜飞双植咸
2019-10-25 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:920万
展开全部
转换其实是对应的ASCII码来显示的。比如char
c=‘A’;
int
i=
c;
那么i=65;是A对应的ASCII码。又比如
c
=
char(65);那么c就是A;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式