为什么C/C++自动将char/wchar_t/short/bool/enum类型转换为int?

2023-11-26

所以,如果我理解得很好的话,积分促销规定:char, wchar_t, bool, enum, short类型总是被转换为int (or unsigned int)。然后,如果表达式中存在不同类型,将应用进一步的转换。

我理解得很好吗?

如果是的话,那么我的问题是:为什么它好?为什么?不要成为char/wchar_t/bool/enum/short不必要?我的意思是例如:

char c1;
char c2;
c1 = c2;

正如我之前所描述的,charALWAYS 转换为int,所以在这种情况下,自动转换后看起来像这样:

int c1;
int c2;
c1 = c2;

但我不明白为什么这很好,如果我知道的话char类型足以满足我的需要。


存储类型永远不会自动转换。只有当你开始进行整数算术时,你才会获得自动整数提升(+, -,位移,...)在这些变量上。

char c1, c2; // stores them as char
char c3 = c1 + c2; // equivalent to
char c3 = (char)((int)c1 + (int)c2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么C/C++自动将char/wchar_t/short/bool/enum类型转换为int? 的相关文章

随机推荐