帮忙解释下这个程序里面用的强制类型转换
#include"stdio.h"/*功能是输入不大过五位数的数,分别写出各位数中间有空隔开*/main()
{long int i;
int w,q,b,s,g,a;
printf("please input i:\n");
scanf("%ld",&i);
if(i>9999)/*判断是几位数*/
a=5;
else if(i>999)
a=4;
else if(a>99)
a=3;
else if(a>9)
a=2;
else
a=1;
w=i/10000;/*求万位,千位,百位,十位,个位的每位数*/
q=(int)(i-w*10000)/1000;/*帮忙看下这里的(int)如果没有这个强制转换运行的是错误码, 但"/"是整除符号,它运算后应该就是一个整数呀.应该不要用强制转换了,不懂呀*/
b=(int)(i-w*10000-q*1000)/100;
s=(int)(i-w*10000-q*1000-b*100)/10;
g=(int)(i-w*10000-q*1000-b*100-s*10);
switch(a)
{case 5:printf("%d %d %d %d %d",w,q,b,s,g);break;
case 4:printf("%d %d %d %d",q,b,s,g);break;
case 3:printf("%d %d %d",b,s,g);break;
case 2:printf("%d %d",s,g);break;
case 1:printf("%d",g);break;
}getch();
}/*我用的WIN TC*/