char类型和int类型相加结果是char类型还是int类型?

 我来答
8826055
2015-09-20 · TA获得超过7511个赞
知道大有可为答主
回答量:1680
采纳率:81%
帮助的人:914万
展开全部

假设程序语言是C/C++。

一般而言结果是int类型。如果在某个编译器上char被实现为unsigned char且长度与int相同,则结果会是unsigned int类型。


执行算术运算,首先对运算对象进行整型提升。所谓整型提升,即按如下规则类型转换:

  1. 对于bool、(signed/unsigned) char、(unsigned) short等类型来说,只要它们所有可能的值都能存在int里,它们就会提升成int类型;否则,提升成unsigned int类型。例如,两个signed char相加,两个signed char都会提升成int。

  2. 较大的char类型(wchar_t、char16_t、char32_t)提升成int、unsigned int、long、unsigned long、long long和unsigned long long中最小的能容纳原类型所有可能的值的类型。


整型提升后,如果结果类型匹配,无需进一步的转换。如果两个(提升后的)运算对象都是带符号的,或者都是无符号的,则小类型转换成大类型。例如,int与long相加,结果是long。


如果一个运算对象是无符号类型,另一个运算对象是带符号类型,又分两种情况:

  1. 无符号的类型不小于带符号的类型(比如unsigned long与int),此时带符号的转换成无符号的。例如原题中若char被实现为unsigned char且长度与int相同,则首先执行整型提升char被转换为unsigned int(int不能容纳char的所有可能值),然后int与unsigned int相加,int被转换为unsigned int,最终结果为unsigned int。

  2. 无符号的类型小于带符号的类型,此时结果依赖于机器。如果无符号类型的所有值都能存在该带符号类型中,则无符号的转换成带符号的,否则带符号的转换成无符号的。

hmy998
2013-01-17 · TA获得超过472个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:80.6万
展开全部
是int类型
char 1个字节,int 2~4个字节
两者相加取大者
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庚灵秀0eZ
2013-01-17 · TA获得超过272个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:283万
展开全部
这两者能加么
追问
可以的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式