永发信息网

c语言数据太大就算不出来,定义为long型数据但是到32768就运算错误,为什么?

答案:3  悬赏:50  手机版
解决时间 2021-04-13 20:58
输入任意整数,调用函数sum(int n),完成对该整数n各位数字的求和
#include
long sum(long x)
{if(x<10) return(x);
else
return(sum(x/10)+x%10);
}
void main()
{long x,y=0;
scanf("%d",&x);
y=sum(x);
printf("sum=%d\n",y);
}
最佳答案
输出的%d 的范围是32767 你改成%ld 就可以了 ok
全部回答
调用函数sum(int n),你这个long型作为参数传过来以后,又被转换成int型的变量n了,肯定出错啊 你应该把函数定义成调用函数sum(long n),
楼主完全不用管二进制的。 printf("%d",i) %d是输出十进制,而long i=32768,32768本来就是十进制了,直接输出就可以了。 具体解答一下楼主下面的疑问 1、32768的二进制不是1000 0000 0000 0000。long i=32768,使用的是long类型存放,long类型占用4个字节,所以32768不止这么长,前面还有一堆0了。 0000 0000 0000 0000 1000 0000 0000 0000 这才是32768的二进制表示方法,最高位是0,并不是1。 如果定义成short i =32768的话,输出就是-32768了。 2、用%d输出是按照i的类型来输出,i占用4个字节,就使用4个字节输出。输出全部0000 0000 0000 0001 0000 0000 0000 0011,既不是0000 0000 0000 0001,也不是0000 0000 0000 0011。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
日本姓氏 奥特曼系列
我们第一次出来见面,她却带着她闺蜜,最后问
为什么眉毛中会长出一个白色的眉毛?
大宇广告在哪里啊,我有事要去这个地方
如何把QQ游戏当中已过期的宝宝续费
He decided that he wouldn’t attend her bi
600858会涨吗?
宜兴同城游戏怎么把字改大一点
汝州市寄料镇都有什么快递公司
风水里卧室能不能养鲜玫瑰, 以前看过一篇风
WOW小德T7在哪里换?求具体地址。
电气工程及其自动化专业是否有必要考研?有没
怎么取掉QQ密码保护?
"银饰加工、刺绣、蜡染被誉为黔东南的三大民
吃葡萄干用洗吗,洗葡萄用什么洗最好?用面粉
推荐资讯
珀莱雅补水好用吗?跟卡尼尔比哪个比较好哦?
韩语学习 词汇积累
QQ抢车位双倍卡在爱心车位上可以的双倍经验吗
5610xm现在还要多少钱?
我被一个女生拉着去开房,我好惊讶?
炒房风险大吗?为什么?
怎么变的这么能睡?
结构层次向???日???葵猫不同点构成植物体的组
选择自己承担代表什么?
DNF10月27号更新后,以前用来替换去掉暴击红
大众软件官网?
三星I728手机的短信铃声怎么设置
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?