2013-04-01 65 views
2
else if((RI >= 181) && (RI <= 210)){ 
     if((ICT1 = false) || ((ICT2 = false) || (ICT3 = false))){ 
     cout << "ICT \n"; 
     if(ICT1 = false){ 
      ICT1 = true; 
      goto endICT; 
     } 
     if(ICT2 = false){ 
      ICT2 = true; 
      goto endICT; 
     } 
     if(ICT3 = false){ 
      ICT3 = true; 
      goto endICT; 
     } 
      endICT: 
    } 

你好! 這只是我的程序的一部分,這段代碼出現了幾次,有不同的變量和其他東西。當我編譯代碼時,出現「error C2143:Syntax Error:missing';'之前'}'「 我是新來的所有這些編碼,並會感謝任何幫助! 感謝您的時間! 編輯: 對不起,我之前沒有包含足夠的代碼!基本上選擇一個隨機數,如果它在一個範圍內,它會通過這個部分。這個範圍只能選擇3次,因爲那麼第一個'if'就不會是真的。 感謝您的所有幫助!此錯誤在'endICT:'行中。C++語法錯誤幫助需要,缺少';'之前}}

+5

那'goto'是毫無意義的。 – chris

+8

這整個事情可以用'ICT3 = true;'代替(假設你在if條件中表示'=='而不是'=')。 –

+0

你確定編譯器在抱怨你複製的行嗎?這可能是有意義的,添加一些上下文(前/後的行) –

回答

4

只需插入一個空語句:

    if(ICT3 = false){ 
     ICT3 = true; 
     goto endICT; 
    } 
     endICT: ; 
} 
+0

做了這個改變,擺脫了錯誤,但現在我沒有得到任何輸出。我認爲這是我需要的,現在需要找到新的問題。非常感謝您的時間! –

0

大概是編譯器混淆您的標籤 endICT:

隨後是關閉)

4

所有音符首先,它被認爲是使用goto聲明是不好的做法。只有在沒有其他選擇的情況下才能使用它。

這段代碼還有更多的東西。我已經評論一些到代碼

if(ICT3 = false) //this will assign value false into variable ICT3 
    //you might want to write if(ICT3 == false) to compare and execute 
{ 
    ICT3 = true; 
    goto endICT; //this goto statement is completely redundant 
} 

//I assume that you want to have some code here, that does not execute 
//if ICT3 == false in the first place... You should use if() ... else 
//statement instead 

endICT: ; //You are missing some ; here should be enough 
} 

對在C/C++ go here流量控制語句的詳細信息。 有關C/C++ try this中的運算符的更多信息。

0

這是語義上等同於您的發佈代碼:

else if (RI >= 181 && RI <= 210) 
{ 
    cout << "ICT \n"; 
    if (! ICT1) 
     ICT1 = true; 
    else if (! ICT2) 
     ICT2 = true; 
    else if (! ICT3) 
     ICT3 = true; 
} 
相關問題