我有一段非常簡單的代碼,它從文件中讀取字符。如果指數y
從低到高迭代,則一切正常。但是,如果它從高到低(註釋行)迭代,它會給我seg故障問題。有人能解釋爲什麼發生這種情況?謝謝!如果索引反向迭代,分段錯誤(核心轉儲)
void read_ct_from_file(unsigned char** ct, const size_t row, const size_t column, FILE* inf) {
size_t x, y;
for(x = 0; x < row; x++) {
for(y = 0; y < column; y++) {
//for(y = column - 1; y >= 0; y--) { // iterate from high to low
fscanf(inf, "%02x", &ct[x][y]);
printf("%02x ", ct[x][y]);
}
printf("\n");
}
}
我不太明白你的解釋,請你解釋一下?所以循環會在y = 0之後繼續?它會去y = -1? – drdot
不,不是-1; size_t是一個無符號整數,因此從不消極。在y = 0之後,y是2^32-1 – Stefan
爲了理解Stefan的評論,您必須瞭解[overflow](http://en.wikipedia.org/wiki/Integer_overflow)。使用無符號整數,當您的值小於0時會溢出。 – RustyTheBoyRobot