基本规则

char和short都被转换为int

float被转换为double

两个不同级别运算将转换为高等级类型

赋值语句里,可能会发生提升或降级

级别从高到低long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int, int

 

  1. #include<stdio.h>  
  2.  
  3. int main(void){  
  4.     char ch;  
  5.     int i;  
  6.     float f;  
  7.  
  8.     f = i = ch = 'A';  
  9.     printf("%c ,%d, %.3f\n",ch,i,f);  
  10.     ch = ch + 1;//ch的值转换为4字节int,与1相加后得到68,最后4字节再截断为1字节的char类型存储在ch中  
  11.     i = 2 * ch + f;//ch的值转换为4字节int,运算后与float类型相加,被转换为double类型,最后赋值再转换为int  
  12.     printf("%c ,%d\n",ch,i);  
  13.     ch = 5212205.17;//降级的实例,截断高位后,ch变为连字符的ASCII码  
  14.  
  15.     printf("%c\n",ch);  
  16.     return 0;