這有個簡單的小程序:
#include <stdio.h>
void main(void) {
int i, b[10];
for (i=0;i<=10;i++) {
b[i] = 0;
}
}
對于這個程序,你認為它的運行結(jié)果是? ( )
A.一切正常 B.下標越界 C.死循環(huán)
實際上,結(jié)果是“C”。納悶嗎?
原因是指針“i”在賦值為10時,由于超過了數(shù)組B的長度,于是指針繼續(xù)偏移向下一位。而這次賦值就不在數(shù)組B里面了,而是將“i”(因為i在內(nèi)存中緊跟在數(shù)組之后)賦值為0 。。于是你看到了,它死機了。。
所以,很多時候,高級語言不一定能解決所有問題。。只因為你看不到底層。因此,即使作為現(xiàn)代程序員(面向?qū)ο缶幊蹋瑢W習匯編(面向機器編程)也是有必要的。