【问题标题】:i keep get this "error C2059" C++我不断收到这个“错误 C2059”C++
【发布时间】:2013-11-09 17:09:31
【问题描述】:

我收到了这个错误

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

【问题讨论】:

  • 查找几乎所有内容的语法可能是个好主意。提示:可以是while( cond ) { .. }do { ... } while( cond )
  • ... 也是if (x==y) 而不是if (x=y)if (m=1) 类似...
  • 为什么else 是空的?你为什么不缩进?
  • 在每个forifwhile 之后使用大括号、{}。牙套是你的朋友。它们将有助于推广具有更少错误的高质量代码。

标签: c++ visual-c++


【解决方案1】:

问题是在do { ... }之后编译器期待一个条件:

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

此外,您的代码似乎根本不正确。例如,您的if (x=y) 条件可能是这样的:if (x==y),以及其他...

【讨论】:

  • 哦.. 谢谢,是的,我知道我是这种编程的新手,非常感谢
  • :) 不客气。试着仔细阅读你的代码,试图理解它在做什么,检查语法,然后一步一步地去!周末愉快。
  • 虽然看起来应该是while,而不是do...while
【解决方案2】:

您的for 语句中有错误。
使用== 进行比较,而不是=,这是赋值。
另外,使用&lt;&lt;= 作为比较。 == 条件可以在循环中跳过。

有助于防止将来出现这些问题的建议:将“{”和“}”与 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 &lt;= n; x++)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2016-12-07
    • 2015-04-17
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多