----------------------------------------------------
程序中有一条语句如下:
ch[ths-2]=0;
其中ch[]; 为一个unsigned char 数组, ths: 为一个unsigned char 格式数据.
如果ths等于1, 则ths-2 就是-1. 如果出现了-1 程序会出现什么现象, 会不会程序混乱?
-----------------------------------------------------
这个问题没有标准答案,看你在什么编译环境下了,有的编译环境中“ch[ths-2]”这种表达式都不能通过;
如果检查机制不严格的话,这种表达也不会有什么大碍,只不过可能出现你没有想到的结果,会把-1强制转换为uchar类型,丢掉最高位的符号位,这就要看你定义的这个数组的大小了,定义小了的话,就要崩溃了,仅仅个人的理解。
1、编译可能通不过。
2、C不做数组边界检查,如果你想程序混乱的话,它就会混乱。
iar编译能通过吧
就是内存乱掉,运气好的话没啥问题
ch[-1]相当于数组ch[]上一个地址的值(假设地址可用),如果给ch[-1]赋值的话,会影响上一个地址空间所存储的值,如果是程序空间的话,程序很有可能会跑飞。