3400|5

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

简单的C语言问题,看看谁的回答既简洁又准确 [复制链接]


----------------------------------------------------
程序中有一条语句如下:
ch[ths-2]=0;

其中ch[]; 为一个unsigned char 数组, ths: 为一个unsigned char 格式数据.
如果ths等于1, 则ths-2 就是-1. 如果出现了-1 程序会出现什么现象, 会不会程序混乱?
-----------------------------------------------------

最新回复

ch[-1]相当于数组ch[]上一个地址的值(假设地址可用),如果给ch[-1]赋值的话,会影响上一个地址空间所存储的值,如果是程序空间的话,程序很有可能会跑飞。  详情 回复 发表于 2011-4-2 15:06
 
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个问题没有标准答案,看你在什么编译环境下了,有的编译环境中“ch[ths-2]”这种表达式都不能通过;
如果检查机制不严格的话,这种表达也不会有什么大碍,只不过可能出现你没有想到的结果,会把-1强制转换为uchar类型,丢掉最高位的符号位,这就要看你定义的这个数组的大小了,定义小了的话,就要崩溃了,仅仅个人的理解。
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1、编译可能通不过。
2、C不做数组边界检查,如果你想程序混乱的话,它就会混乱。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
iar编译能通过吧
就是内存乱掉,运气好的话没啥问题
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 

程序会跑飞的

会出现异常错误
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
ch[-1]相当于数组ch[]上一个地址的值(假设地址可用),如果给ch[-1]赋值的话,会影响上一个地址空间所存储的值,如果是程序空间的话,程序很有可能会跑飞。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表