我不断收到这个“错误 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
是空的?你为什么不缩进?
在每个for
、if
和while
之后使用大括号、。牙套是你的朋友。它们将有助于推广具有更少错误的高质量代码。
【参考方案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
语句中有错误。
使用==
进行比较,而不是=
,这是赋值。
另外,使用<
或<=
作为比较。 ==
条件可以在循环中跳过。
有助于防止将来出现这些问题的建议:将“”和“”与 for
、if
、else
和 while
一起使用。
例如:
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++)
【讨论】:
以上是关于我不断收到这个“错误 C2059”C++的主要内容,如果未能解决你的问题,请参考以下文章
错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”