簡體   English   中英

如果在for循環中聲明?

[英]If statement in a for loop?

我想寫這樣的東西,但我不確定如何寫。

for(int i = 0; i < ( the greater value between intA and intB ); i++)

for語句中間的表達式與if語句完全一樣。 僅當表達式的值為真時,循環才會繼續。 因此,有幾種邏輯上等效的方式可以編寫所需內容:

// using a ternary operator
for (int i=0; i < ((intA > intB) ? intA : intB); ++i)
{
    // do stuff
}

// using a simple Boolean OR
for (int i=0; i < intA || i < intB; ++i)
{
    // do stuff
}

// using a MAX macro
for (int i=0; i < MAX(intA, intB); ++i)
{
    // do stuff
}

但是在您的特定情況下,這些都不是理想的,因為前兩個不是真正清晰的代碼,並且它們在循環中每次迭代時都評估intAintB 更好的是:

int maxAB = MAX(intA, intB);
for (int i=0; i < maxAB; ++i)
{
   // do stuff
}

使用三元運算符:

for(int i = 0; i < (intA > intB ? intA : intB); i++)

使用tha MAX宏。

MAX( a, b )

如果不可用,則可以定義它:

#define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )
for(int i = 0; i < ((a) < (b) ? (a) : (b)); i++)

我建議在每次執行for語句之前使用MAX宏或使用額外的if語句。 使用三元運算符還不夠清晰,無法支持將來的維護。 但那只是我的個人意見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM