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

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 的用法,谢谢了
最新回答
一丁温暖

2024-10-16 07:30:06

分号是用来结束语句的,如
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时的情况。
蔚蓝的心

2024-10-16 05:31:35

比如分支可以写成:
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();这样,程序就会等待你按任意键后才会继续执行。
朝朝暮暮

2024-10-16 05:11:16

比如分支可以写成:
if(x>=500)//这儿没有分号
{
go(600,,610);
}
else
if(x<500)//这儿也没有分号
{
go(0,0);
}
应该是你的分号写多了才会报错。同时你的while(1);会陷入死循环,也会有问题的。