這有個簡單的小程序:
#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ū)ο缶幊蹋,學習匯編(面向機器編程)也是有必要的。
|