为什么将int换成char,结果就不一样了。
发布网友
发布时间:2022-05-12 18:47
我来回答
共2个回答
热心网友
时间:2023-10-18 08:59
假设程序语言是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.
无符号的类型小于带符号的类型,此时结果依赖于机器。如果无符号类型的所有值都能存在该带符号类型中,则无符号的转换成带符号的,否则带符号的转换成无符号的。
热心网友
时间:2023-10-18 08:59
char是字符类型的,首先你的定义就有点问题,其次直接按整型方式输出字符型变量,程序会默认将字符型变量按ASCII编码
转换后再输出。