关于类型转换、乘法计算的简单有关问题求解,要拿分就快来啊

关于类型转换、乘法计算的简单问题求解,要拿分就快来啊!
今天遇到一个问题,百思不得其解,请高手解答,谢谢!
代码如下:
#include <stdio.h>
#include <conio.h>
int main(void)
{
char c=39;
double y=5.5;
c*=y;
printf("%d\n",c);
getch();
return 0;
}
输出结果竟然为“-42”!
我想不明白怎么会出现这样的结果,求解释!

------解决方案--------------------
关键语句:
c *= y;
分解之:
c = c * y;
解释之:
c * y结果为浮点数,但c本身为整数(范围-128~127),结果赋值给c时发生警告(C4309)被截断,截断方式是214.5变为214(无符号),正好是-42(有符号),故而出现以上结果。