C语言总显示 syntax error before "else" 谁能帮忙看一下,急求!谢谢了

intmain(void){sys_init();inta;x=getadc(5);if(x>=500);{go(600,610);}while(1);elseif(x<... int main(void)
{
sys_init();
int a;
x=getadc(5);
if(x>=500);
{
go(600,610);
}
while(1);
else if(x<500);
{
go(0,0);
}
}

还有,最好介绍一下if 和 else if 和 else 的用法,谢谢了
展开
 我来答
cdyzxy
2013-01-25 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3591万
展开全部
分号是用来结束语句的,如
if ( x>=500 )
{
go(600,610);
}
else
{
go(0,0);
}
这句话是一个句子,if是条件判断语句关键词,后面一对小括号中是语句的条件判断部分,
然后的一对大括号引用的是条件成立时需要执行的其他语句,else也是这个条件语句的一部分,
后面的一对大括号引用的是条件不成立时需要执行的其他语句,到了这里,else最后的一个
反大括号这个语句才算结束,才可以加分号如:
if ( x>=500 )
{
go(600,610);
}
else
{
go(0,0);
}; // 只是c语音默认,反大括弧后面可以不写分号,加上也不算错
你如果在if ( x>=500 )后面就加;的话,编译系统就认为这句if语句结束了,从而:1.找不到条件
成立时执什么语句部分;2.找不到else部分。因此算是个错误语句。
所以,分号不能乱加,只能加在语句之后。
你的程序:
int main(void)
{
sys_init();
int a;
x=getadc(5);
if(x>=500); // 这个分号错误地结束了if语句所以应当去掉
{
go(600,610);
}
while(1); // 这个语句独立在if语句之外,系统默认上行的反大括弧是if语句结束导致下句出错
else if(x<500); // 同第一个if
{

go(0,0);
}
}
分析你的程序应当是判断x大于500就go(600,610),否则x小于500则go(0,0)
但:
while(1);死循环语句是要在大于500后go完在此死锁吗?
如果程序排除上述问题后,分析一下,还没有判断处理等于500时的情况。
495006387
推荐于2017-12-15 · TA获得超过338个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:261万
展开全部
比如分支可以写成:
if(x>=500)//这儿没有分号
{
go(600,,610);
}
else if(x<500)//这儿也没有分号
{
go(0,0);
}
应该是你的分号写多了才会报错。同时你的while(1);会陷入死循环,也会有问题的。
追问
程序是对了,但机器人还是不会动。。。。。。是不是循环结构有问题,还有,为什么分号多了会报错了,分号不是必须加的吗?不好意思,我刚接触C语言,还比较菜,太谢谢了。
追答
别的我不清楚,但是你写成
if(XX);那么它的意思就是如果满足XX条件,不执行任何语句。相当于
if(XX)
{
;
}
另外你应该把while(1)去掉,如果你想每调用go()一次,就看到机器人的位置,可以在源代码最前面里面添加#include
然后在每一个go();后面加上getch();这样,程序就会等待你按任意键后才会继续执行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
房郎礼夏
2020-03-09 · TA获得超过3873个赞
知道小有建树答主
回答量:3197
采纳率:24%
帮助的人:170万
展开全部
比如分支可以写成:
if(x>=500)//这儿没有分号
{
go(600,,610);
}
else
if(x<500)//这儿也没有分号
{
go(0,0);
}
应该是你的分号写多了才会报错。同时你的while(1);会陷入死循环,也会有问题的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式