2017-04-25 131 views
0
#include<iostream> 
using namespace std; 
int main() 
{ 
    if(for(int i=0;i<10;i++)if(i>6)break;) 
    cout<<"i went till 10";//execute if the if statement is true 
    else cout<<"i went till 6"; 
} 

如果它擊中打破它應該去別的。 這是甚至可能的嗎?如果有的話,在寫這個問題時發生的錯誤感到抱歉。第二次嘗試提問。我可以使用循環作爲if語句條件語句嗎?

我可以使用任何其他函數或語句來執行此類任務。

+0

當你在'6'之後總是'break'時,'i'會變成'10'嗎?爲什麼不直接說'for(int i = 0; i <= 6; ++ i)'? – Galik

+0

這不是我想要實現的實際代碼,它只是一個簡單的例子來說明我想討論什麼問題 –

+0

「if」中的條件必須是一個值。 'for'不返回一個值,所以這是無效的。然而,還有其他方式可以像其他海報所表明的那樣去做你想做的事情。 – Donnie

回答

3

沒有,for語句是一個語句和的表達。條件表達式需要是一個表達式。

但是你當然可以,你在其他方面想要什麼,甚至無需求助於goto。一種方法是再次檢查循環條件,看看它是否失敗(否則就必須打破圈外,給出一些假設):

int i; 

for(i=0; i<10; i++) 
    if(i>6) 
     break; 

if(i<10) // Loop condition still true, so we must have broken out 
    cout << "i went till 6"; 
else  // Loop condition not true, so we must have finished the loop 
    cout << "i went till 10"; 

如果這是不可能的,你可以使用一個變量來表示是否你是否打破了這個循環。或者你可以換環的功能及使用方法的返回值來表明是否爆發或成品:

bool broke_out_of_loop(void) { 
    for(int i=0; i<10; i++) 
     if(i>6) 
     return true; 
    return false; 
} 

void your_function(void) { 
    if(broke_out_of_loop())  
     cout << "i went till 6"; 
    else  
     cout << "i went till 10"; 
} 
+0

並不是真的,因爲'''在'for'語句中聲明,所以它不在其外部。 –

+0

@ el.pescado你是正確的,我感動的聲明'外i'爲目的... – skyking

+0

@skyking感謝名單,將嘗試使用布爾函數 –

-1

不,你無法使用循環作爲一個的if else條件語句。

+0

歡迎StackOverflow上到impliment。我注意到你有參加巡迴演唱會的徽章。也許你應該重讀關於如何回答的部分。 如果你想知道爲什麼你被低估了(不是由我,雖然我被誘惑):我猜downvoter的原因是你的答案沒有幫助的性質。它基本上正確的事實並沒有改變這一點。 – Yunnosch

0
if([&]{for(int i=0;i<10;i++)if(i>6)return false; return true;}()) 
    std::cout<<"i went till 10";//execute if the if statement is true 
    else std::cout<<"i went till 6"; 
} 

我不會建議這個構造,但上面的編譯和做你想做的。