找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1844|回复: 0
收起左侧

真假死循环

[复制链接]
ID:127496 发表于 2016-6-20 23:12 | 显示全部楼层 |阅读模式
这有个简单的小程序:

#include
<stdio.h> 
void main(void) { 
    int i, b[10]; 
    for (i=0;i<=10;i++) { 
        b[i] = 0; 
    }
}


对于这个程序,你认为它的运行结果是? (  )

A.一切正常  B.下标越界  C.死循环




实际上,结果是“C”。纳闷吗?
原因是指针“i”在赋值为10时,由于超过了数组B的长度,于是指针继续偏移向下一位。而这次赋值就不在数组B里面了,而是将“i”(因为i在内存中紧跟在数组之后)赋值为0 。。于是你看到了,它死机了。。
所以,很多时候,高级语言不一定能解决所有问题。。只因为你看不到底层。因此,即使作为现代程序员(面向对象编程),学习汇编(面向机器编程)也是有必要的。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表