基本规则
char和short都被转换为int
float被转换为double
两个不同级别运算将转换为高等级类型
赋值语句里,可能会发生提升或降级
级别从高到低long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int, int
- #include<stdio.h>
- int main(void){
- char ch;
- int i;
- float f;
- f = i = ch = 'A';
- printf("%c ,%d, %.3f\n",ch,i,f);
- ch = ch + 1;//ch的值转换为4字节int,与1相加后得到68,最后4字节再截断为1字节的char类型存储在ch中
- i = 2 * ch + f;//ch的值转换为4字节int,运算后与float类型相加,被转换为double类型,最后赋值再转换为int
- printf("%c ,%d\n",ch,i);
- ch = 5212205.17;//降级的实例,截断高位后,ch变为连字符的ASCII码
- printf("%c\n",ch);
- return 0;
- }
转载于:https://blog.51cto.com/fanaticssk/824952