永发信息网

这个c语言哪里错了?为什么呢?小白求详解

答案:6  悬赏:0  手机版
解决时间 2021-03-10 20:30
这个c语言哪里错了?为什么呢?小白求详解
最佳答案
unsigned ,len = 0 时, 储存为:0000000000.。。。00(32个0,没有第一位表示正负)
int i = 0 时, 储存为10000.。。00(1个1表示正负,31个0代表值)
而len-1 的储存为 1111111.。。11(32个1)
但是这个储存,如果表达成int型时,值为:+ 2的31次方-1 = 2 147 483 647,
这个循环,将执行2 147 483 647次,而声名的a数组,长度是0,有2个可能:
1,传的a的地址不是空,但是访问超越了声明的数组长度,就会报错 内存错误……
2,传的a的地址为空,访问空地址,为报错内存错误。追问你好啊,为什么int型的时候,第一位表正负为什么是1,不是0?
全部回答

当len = 0时  a[]为空 所以进入循环时执行result+=a[i]时访问了a[0]而显然a[0]是不存在的所以出现访问异常
应该在循环内部判断  避免len = 0时访问 a[0]if(len ==0)
  result = 0;
else 
  result += a[i];追问你好,我这边有个学长写的答案,看不太懂
len值为0减1?
len值应设为数组的长度,即数组中元素的个数

你们学长说的是对的
把usinged改成int就行了,因为如果len是unsigned类型的话,len-1是不会为负数的(因为类型限制),所以导致访问a越界
因为len的类型是unsigned类型,只能表示整数,即使0-1得到的只能是下溢的结果还是正数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么在北京面试的时候全都是在那种写字楼里
福源食杂店(安乐路)地址有知道的么?有点事想
找一首粤语情歌
在一块表面积为S的铁件上镀铜后,铁件的质量增
口袋妖怪红宝石99号精灵是什么
鱼我所欲也断句
中药能用金属器皿煎吗?
“但是那时候我已经死了”用英语怎么翻译?
男性,18岁。胸腔积液检查为血性,比重1.020
宁海县桃源街道冠庄社区卫生服务站在什么地方
我准备写一个宫斗故事,男主角和女主角需要名
电脑蓝屏STOP:0x0000009C如何解决??
300毫升的水杯应放多少克茶叶
何家塝子我想知道这个在什么地方
怎样解决securecrt中汉字的横向显示
推荐资讯
是不是想不到,3D打印技术还可以这样玩
哇呜是什么意思
笨蛋测验召唤兽第2部的主题曲和结尾曲是神马
从广州南站到广东华岭国际家纺窗帘城多远怎么
潍坊到长白山的动车
白玉兰医保卡住院报销比例
斯柯达昕锐可以分期?
如果两个人不吵架,这才叫真的爱情吗
影响少年儿童品德形成的因素中起主导作用的因
现有如图所示的6种瓷砖,请用其中的4块瓷砖(
北濠农贸市场我想知道这个在什么地方
白朴是谁
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?