我有一個for循環,用於查找最危險的特定船隻的最近直升機。C爲什麼這個循環在條件滿足時不能執行?
我遇到的問題是我需要從我的搜索忽略救生艇(這些都有這是一個單一字符的結構的L
類型),並只專注於直升機,由H
這是一個單個字符代表一個結構。
我的問題是,當我有這樣的循環:
closest_index = 0;
for (j = 0; j < asset_size; j++) {
printf("type : %c \n", (assets + j)->type);
if ((assets + j)->type == 'H') {
if (((assets + j) ->distance_from_mayday) < ((assets + closest_index) ->distance_from_mayday)) {
closest_index = j;
printf("closest_index heli = %d \n", closest_index);
}
}
}
它肯定會被調用,我加了一行:
printf("type : %c \n", (assets + j)->type);
只是比較之前,它產生這種導致控制檯:
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : L
type : H
type : H
type : H
type : H
type : H
type : H
正如你所看到的有H
所以我不明白爲什麼這個for循環沒有按照意圖執行,有什麼想法?
有什麼特別的原因,你在使用'(資產+ J) - > field',而不是'資產[J] .field'? –
「不執行」不是一個恰當的描述。日誌輸出顯示它*正在執行,但你沒有得到你想要的最終結果。 – Potatoswatter
所以你已經確定'(assets + j) - > field'有時候通過循環有值'H',但是除了最終要做的內部'printf'。如果問題是你沒有看到那個輸出(我猜這就是它的原因,因爲你只是說「for循環沒有執行」,事實並非如此),那麼我會檢查該條件。 – lurker