2013-11-09 42 views
-6

我收到此錯誤我一直得到這個 「錯誤C2059」 C++

error C2059: syntax error : 'if' 

這是我的代碼

// N.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include <iostream> 

int main() 
{ 
    int x,y,n,i,m; 
    std::cout<<"please enter a number"; 
    i=0; 
    std::cin>>n; 
    for (x=1;x=n;x++) 
     for (y=1;y=n;y++) 
     if (x=y) m=x; 
     else; 
    while (x!=y) ; 
    do 
    { 
     if (x>y) x=x-y; 
     else y=y-x; 
     m=x; 
    } 
    if (m=1) i=i+1; 
    std::cout<<i; 
    return 0; 
} 

是什麼問題?

我使用Microsoft Visual Studio 2008

+4

查找幾乎所有內容的語法可能是個好主意。提示:它是'while(cond){..}'或'do {...} while(cond)'。 – JJJ

+2

...也是'if(x == y)'不是'if(x = y)'並且'if(m = 1)'類似... –

+1

爲什麼你有一個空的'else'?你爲什麼不縮進? – Ryan

回答

1

的問題是,do { ... }後的編譯器期待一個條件:

do 
{ 
    if (x>y) x=x-y; 
    else y=y-x; 
    m=x; 
} while (condition); 

此外,你的代碼似乎是不正確的。例如,您的if (x=y)條件可能如下所示:if (x==y)和其他...

+0

喔.. 感謝的人 是啊,我知道 我是新來的這種編程 非常感謝 – user2973413

+0

:)歡迎您。嘗試仔細閱讀你的代碼,試圖理解最近在做什麼,檢查語法,然後一步一步來!週末愉快。 –

+0

雖然它看起來應該是'while',而不是'do ... while'。 –

0

您的for聲明中有錯誤。
使用==進行比較,而不是=這是分配。
另外,使用<<=作爲比較。可以在循環中跳過==條件。

一個建議,以幫助防止這些問題在將來:使用「{」和「}」與forifelsewhile

例如:

for (x=1;x=n;x++) 
{ // Insert this line. 
    for (y=1;y=n;y++) 
    { // Insert this line. 
     if (x=y) 
     { 
      m=x; 
     } 
     else 
     { 
      ; 
     } 
    } // End of for y 
} // End of for x 

在代碼審查的括號和縮進幫助發現錯誤。大多數編碼風格都需要大括號,即使是單個語句也是如此。

此外,使用空格使代碼更具可讀性。它們不會影響構建時間或代碼生成,但在閱讀代碼時確實有幫助:
for (x = 1; x <= n; x++)