分类：电脑/网络-程序设计
问题：一个简单的C语言问题(我是菜鸟)题目是:输入一个5位数,是它按照 
题目是:输入一个5位数,是它按照从万-千-百-十-个来显示每一位数.我输入９７８６５；结果错误的:main(){long int a;int b,c,d,e,f;printf("(0-99999):");scanf("%ld",&a);f＝(int)a/10000;e＝(int)(a-f*10000)/1000;d＝(int)(a-f*10000-e*1000)/100;c＝(int)(a-f*10000-e*1000-d*100)/10;b＝(int)(a-f*10000-e*1000-d*100-c*题目是:输入一个5位数,是它按照从万-千-百-十-个来显示每一位数.我输入９７８６５；结果错误的:main(){long int a;int b,c,d,e,f;printf("(0-99999):");scanf("%ld",&a);f＝(int)a/10000;e＝(int)(a-f*10000)/1000;d＝(int)(a-f*10000-e*1000)/100;c＝(int)(a-f*10000-e*1000-d*100)/10;b＝(int)(a-f*10000-e*1000-d*100-c*10);printf("%d,%d,%d,%d,%d",f,e,d,c,b);}结果为3,2,3,2,9;正确的程序是:main(){long int a;int b,c,d,e,f;printf("(0-99999):");scanf("%ld",&a);f＝a/10000;e＝（int)(a-f*10000)/1000;d＝(int)(a-f*10000-e*1000)/100;c＝(int)(a-f*10000-e*1000-d*100)/10;b＝(a-f*10000-e*1000-d*100-c*10);printf("%d,%d,%d,%d,%d",f,e,d,c,b);}结果是：９，７，８，６，５；程序格式没有错啊，为什么会有以上错误结果？
回答：错误的程序中,
f＝(int)a/10000;

这一句搞错错了，()的优先级比/高，你先把a转化成了int型，而a超过了int的最大值，所以f的值是错误的，f一错，后面的也就跟着错了.
正确的作法是
f＝a/10000;
或 f＝(int)（a/10000）;