我不断收到这个“错误 C2059”C++

Posted

技术标签:

【中文标题】我不断收到这个“错误 C2059”C++【英文标题】:i keep get this "error 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 之后使用大括号、。牙套是你的朋友。它们将有助于推广具有更少错误的高质量代码。 【参考方案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++)

【讨论】:

以上是关于我不断收到这个“错误 C2059”C++的主要内容,如果未能解决你的问题,请参考以下文章

VC++6 错误 C2059:语法错误:'常量'

错误 C2143 和错误 C2059 缺少“;”前 ””

错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”

如何找到 C++ 编译器认为定义为常量的内容?

为啥我不断收到这个受诅咒的 SQL*Plus 无效标识符错误?

错误:函数不是“类”的静态数据成员 - C++