单片机if else嵌套

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int;
uint liang;
void main()
{
for(liang=0;liang<5;liang++)
{
if(liang==0)
P2=0x01;
P0=0x3f;
else if(liang==1)
P2=0x02;
P0=0x06;
else if(liang==2)
P2=0x04;
P0=0x5b;
else if(liang==3)
P2=0x08;
P0=0x4f;
else if(liang==4)
P2=0x10;
P0=0x66;
else
P2=0x20;
P0=0x6d;
liang=0;
}
}

这为什么会有错呢?语法好象没错,但编译的时候出现Build target 'Target 1'
compiling LED.C...
LED.C(12): error C141: syntax error near 'else'
LED.C(15): error C141: syntax error near 'else'
LED.C(18): error C141: syntax error near 'else'
LED.C(21): error C141: syntax error near 'else'
LED.C(24): error C141: syntax error near 'else'
Target not created

//在if 、esle 的程序段加上花括号就可以了,如下:

//已经在keil中调试通过
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint liang;
void main()
{
for(liang=0;liang<5;liang++)
{
if(liang==0)
{
P2=0x01;
P0=0x3f;
}
else if(liang==1)
{
P2=0x02;
P0=0x06;
}
else if(liang==2)
{
P2=0x04;
P0=0x5b;
}
else if(liang==3)
{
P2=0x08;
P0=0x4f;
}
else if(liang==4)
{
P2=0x10;
P0=0x66;
}
else
{
P2=0x20;
P0=0x6d;
liang=0;
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-06-26
这是因为执行B那么 a必须等于0,而a等于0时,就退出while循环了,所以无法执行B。本回答被网友采纳
第2个回答  2010-04-11
你的所有if,else if和else都缺少大括号
else if(liang==4){
P2=0x10;
P0=0x66;
}
第3个回答  2010-04-11
嵌套过多时用switch case 语句比较好
第4个回答  2010-04-11
建工程了吗你
相似回答