2013-11-10 308 views
2

我想把if語句放在my for循環檢查參數中,但我不知道該怎麼做,我想這樣做,所以我不必複製我的代碼,並使它變得龐大,多餘和雜亂。FOR循環語句中的IF語句?

這就是我要做的

for(int i = elevator1CurrentStatus.floorNumber; if(boundary == 9) i<boundary else i>boundary ;i+=i+countDirection){ 

//Code Here 

} 

我將如何實現這一點?基本上我想要測試語句說明是否要計數或取決於變量,並根據該變量選擇哪個方向。計數方向是較早實現的,可以是+1或-1。 對(INT I = elevator1CurrentStatus.floorNumber;(如果(邊界== 9)iboundary); I + = I + countDirection)

for(int i = elevator1CurrentStatus.floorNumber; (if(boundary == 9) i<boundary else i>boundary) ;i+=i+countDirection) 
+0

你能解釋一下你的IF條款?你在做什麼,如果(邊界== 9)我<邊界其他我>邊界' – Ankit

回答

7

使用三元運算符:

for(int i = elevator1CurrentStatus.floorNumber; 
    boundary == 9 ? i < boundary : i > boundary; 
    i += i + countDirection) { 

//Code Here 

} 

但我會移動分離功能/方法以提高可讀性的條件。

+0

這是我在找什麼,謝謝!我會接受這個答案,當它讓我 – user2076774

+0

YOu可能想在這裏和那裏添加一些括號 - 以提高可讀性。 '(邊界== 9)? (i <邊界):(i>邊界);',例如。 – SigTerm

2

我會建議把條件放在一個單獨的函數中。它會使它更具可讀性。儘量不要內聯複雜的條件。此外,您現在可以使用任何多級別的if-else,switch case或任何其他返回布爾值的操作。

這裏是你可以做什麼:

bool conditionCheck(int i, int boundary) { 
     if (boundary == 9) { 
      return i < boundary; 
     } else { 
      return i > boundary; 
     } 
    } 

int main(int argc, char *argv[]) { 
     int boundary = 10; 
     int i = 0; 
     for (i = 0; conditionCheck(i, boundary); i++) { 

     } 

    } 
+0

語法無效。問題是關於C++。 Y我們的代碼不是C++。 – SigTerm

+0

@SigTerm現在可以:D – Ankit

+1

不可以。仍然不是C++。抓住一個C++編譯器,嘗試編譯它,看看會發生什麼。 – SigTerm