注册 登录
编程论坛 C++教室

if(c>b)报错

handongxu6 发布于 2012-09-02 16:03, 578 次点击
# include <reg52.h>
# define uint unsigned
# define uchar unsigned char

sbit c = P0^0;
sbit d = P0^1;
sbit led = P0^2;
uchar code table1[] = {0x01, 0x02, 0x04, 0x08};
uchar code table2[] = {0x08, 0x04, 0x02, 0x01};

void delay(uint x)
{
    uchar i;
    while(x --)
    {
        for(i = 80; i > 0; i --);
    }
}

void main()
{
    EA = 1;
    while(1)
    {
        if(c == d)
        {   
            led = 0;
            delay(10);
        }
        else
        {
            if (c > d)
                 EX0 = 1;
            else
                EX1 = 1;
        }
    }            
}

void int0() interrupt 0
{
    uchar a;
    for(a = 0; a < 4; a ++)
    {
        P3 = table1[a];
        delay(10);
    }
}

void int1() interrupt 2
{
    uchar b;
    for(b = 0; b < 4; b ++)
    {
        P3 = table2[b];
        delay(10);
    }
}
这里:if(c>b)这一行提示'>' bad operand type.怎么回事啊?
谢谢~
7 回复
#2
zklhp2012-09-02 16:14
这好像是单片机或其他类似东西的编程罢 也不算C++

报某一行的错误可能是这号下面或上面的问题 你多看看呗
#3
handongxu62012-09-02 16:16
以下是引用zklhp在2012-9-2 16:14:43的发言:

这好像是单片机或其他类似东西的编程罢 也不算C++

报某一行的错误可能是这号下面或上面的问题 你多
是单片机的一个程序,可我找不到错在哪~~

哎~
#4
zklhp2012-09-02 16:17
EX0 = 1;

这是啥 有定义什么的么 操作合法么
#5
pangding2012-09-02 17:40
看错误提示的意思好像是说 c 和 d 这种类型(sbit),不能用做 > 的操作数。
#6
ak47ar2012-09-02 21:06
应该是52单片机,C和D设置为输入端口,不能直接进行罗辑比较,应通过别的变量来。
A=C;
F=D;
IF(A>F)
#7
mfs1111162012-09-03 06:42
学习……
#8
embed_xuel2012-09-03 07:12
单片机的问题你来c++问?
1