Mir*_*vic 4 c short type-conversion char
K&R声明,如果任一操作数是int
另一个操作数将被转换为int
.当然,所有其他的规则(比如仅在这之后long double
,float
,unsigned int
等)进行了跟踪.
通过该逻辑,如果另一个操作数是一个,char
则将被转换为.但是如果操作中的最高整数类型是?int
int
short
现在,很明显我并不需要显式地转换char
到更大的整数,但我不怀疑,不ANSI-C处理之间的隐式转换char
和short
引擎盖下?K&R没有透露任何相关信息.
说,我有以下几行代码:
char x = 'x';
short y = 42;
short z = x + y;
Run Code Online (Sandbox Code Playgroud)
会x
转换成short
?或者根本没有转换开始?
只是说清楚:我不是在询问是否或如何转换char
为short
.我只是想知道隐式类型转换会发生什么.
"整数提升"会int
在添加之前将它们转换为:
如果可以使用int或unsigned int,则可以在表达式中使用以下内容:
- 具有整数类型的对象或表达式,其整数转换等级小于int和unsigned int的等级.
[...]如果int可以表示原始类型的所有值,则该值将转换为int; 否则,它将转换为unsigned int.这些被称为整数促销.
(ISO/IEC ISO/IEC 9899:1999(E),§6.3.1.1)