我在C中有下面的代碼。它正在工作,但我不明白它爲什麼起作用。在我的腦海中,它不應該。正如你所看到的,我正在處理兩個數組,我用數組[i]和數組[j]'抓取'數組中的一個元素。對於數組[j],我只想測試第一個if和第二個if;對於數組[我]我只想測試第二個if,第二個else和最後一個。理解控制流if,else if,else in C
這樣寫的方式看起來不太優雅。在這種情況下最好的做法是什麼?另外,如果評估爲真,C雖然一旦停止測試條件,就會停止測試條件。如果是這種情況,爲什麼代碼在評估第一個else時仍然有效,如果是true;它似乎繼續測試陣列[我]。 (這是我希望它工作的方式;我只是不知道它爲什麼起作用)。
for (int i = 0, j = 0; i <= numChars; ++i)
{
int index = j % keyNumChars;
if (isupper(argv[1][index]))
{
// execute code A1
}
else if (islower(argv[1][index]))
{
// execute code A2
}
if (isupper(plainText[i]))
{
// execute code B1
}
else if (islower(plainText[i]))
{
// execute code B2
}
else
{
//execute code B3
}
}
它繼續,因爲你有兩個不同的區塊 - 你有一個if語句的else語句之後,因此,無論在其他結果將繼續下一個如果。你的第二塊只會匹配一個if-elseif-else – Andrew
看起來很好看。你不會在邏輯表達式中將它與快捷方式混淆? – mvw