java中char类型和int类型相加结果是char类型还是int类型

如题所述

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

执行算术运算,首先对运算对象进行整型提升。所谓整型提升,即按如下规则类型转换:
对于bool、(signed/unsigned) char、(unsigned) short等类型来说,只要它们所有可能的值都能存在int里,它们就会提升成int类型;否则,提升成unsigned int类型。例如,两个signed char相加,两个signed char都会提升成int。
较大的char类型(wchar_t、char16_t、char32_t)提升成int、unsigned int、long、unsigned long、long long和unsigned long long中最小的能容纳原类型所有可能的值的类型。

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

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

无符号的类型不小于带符号的类型(比如unsigned long与int),此时带符号的转换成无符号的。例如原题中若char被实现为unsigned char且长度与int相同,则首先执行整型提升char被转换为unsigned int(int不能容纳char的所有可能值),然后int与unsigned int相加,int被转换为unsigned int,最终结果为unsigned int。
无符号的类型小于带符号的类型,此时结果依赖于机器。如果无符号类型的所有值都能存在该带符号类型中,则无符号的转换成带符号的,否则带符号的转换成无符号的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-08-06
char类型是16位的,底层采用unicode编码保存.
char类型是可以直接赋值给int类型的,因为是16位到32位低到高.
举个例子比如int i='1';打印i的值是49.
char类型跟int类型进行计算的时候会自动转换为int类型
比如System.out.println('1'+1);输出结果是50.
char类型的'='换成int是61本回答被提问者采纳
第2个回答  2019-07-25
刚好今天在复习,过几天就面试去的.当然我说的是JAVA的.我给你几个例子就知道了.
System.out.println('0'+'A');// 48+65 = 113 未指定类型--输出int

System.out.println((char)('0'+'A'));// q 强转char --输出char

System.out.println(10+'A'); //75 未指定类型--输出int

System.out.println((char)10+'A'); //75 未指定类型--输出int

System.out.println((char)(10+'A')); //K 强转char --输出char
System.out.println((char)((char)10+'A')); //K 强转char --输出char
也就是说,结果未指定类型的情况,默认输出的是码值(ASCII码表对应的值),即int类型.
如果指定了类型,输出的就是那个类型.比如char.
我的总结:
字符参与运算,其实是拿字符对应的码表中的数字进行运算的,
如果本身不是字符,而是int类型或char类型的数字(默认为码值,比如 char a = 10, int a = 10;这里的10都会默认为码值10),则就先转换其他字符对应的码值再计算结果,找到结果对应的字符.如果类型为char型,则输出字符,如果不是,则输出结果码值.

java中char类型和int类型相加结果是char类型还是int类型
是的,char类型对应的ascii值与int类型值相加。

char类型和int类型相加结果是char类型还是int类型?
一般而言结果是int类型。如果在某个编译器上char被实现为unsigned char且长度与int相同,则结果会是unsigned int类型。执行算术运算,首先对运算对象进行整型提升。所谓整型提升,即按如下规则类型转换:对于bool、(signed\/unsigned) char、(unsigned) short等类型来说,只要它们所有可能的值都能存在int里,它...

java 数据类型的自动转换
第一 char相加的结果是int类型,不能赋值给String 第二 A+B的结果是int类型,再加上String,请应用int+String的规则 第三String+char+char,请应用char+String的规则 package org.xyz;public class Test{public static void main(String[] args) {String V = "与";char A = '男';char B = ...

Java中char型和整型数能相加?
这个是可以相加的,因为char类型是可以转换为int类型的(计算过程中自定进行转换,不需要强制转换的)。举例:

在java中关于自动类型转换说法正确的是 每一项都解释下
应该是A和C吧 A就不用解释了吧。“a" + 5肯定等于"a5"B和C:只能有取值窄的范围向宽范围转换,反之则不行。char < int < double 所以B:结果一定是int类型 所以C是对的

java里关于sout的问题?
在基本数据类型中,各数据类型的容量大小是不同的,其中, char是16位的,int是32位的,java中,低位和高位进行运算时,会自动把低位转成高位 也就是char + int 会变成 int + int java中,整数的默认数据类型是int 所以,直接写print(c1 + 1)会被计算成int 型的整数相加,比如a对应的ASCII码是...

java中两个char型变量比如‘你’‘好’ 两个相加会变成什么?会变成int...
可以试验一下啊 据试验是可以的 但这有什么意义呢 char a = '你';char b = '好';int c = a + b;System.out.println(c);43229

字符型1和int型相加
char类型和int类型相加么?若两种类型的字节数不同,转换成字节数高的类型 隐式类型转换分三种,即算术转换、赋值转换和输出转换。 1.算术转换 进行算术运算(加、减、乘、除、取余以及符号运算)时,不同类型数招必须转换成同一类型的数据才能运算,算术转换原则为:在进行运算时,以表达式中最长类型...

Java中把整型常量与字符常量相加的结果赋给字符变量,会有问题吗?比如ch...
估计是错的,可能要强制类型转换。因为相加后是int型的,要强制为char

两个char类型的数据相加为什么结果却是数字
char实际上就是int型,保存的是字符的ascii码,所以char基本上和int是通用的,因此两个char相加的结果是数字,而且char是可以和int直接相加的。利用这一特性,可以方便的实现字母的大小写转换,以及字符型数字和数字之间的转换。

相似回答