标题: 真假死循环 [打印本页]

作者: 51hei丽人    时间: 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 。。于是你看到了,它死机了。。
所以,很多时候,高级语言不一定能解决所有问题。。只因为你看不到底层。因此,即使作为现代程序员(面向对象编程),学习汇编(面向机器编程)也是有必要的。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1