标题: 初学单片机C语言,为什么这结果?求两数的差值,不想引入负值,就大的减小的,可是 [打印本页]

作者: 大IGBT    时间: 2023-1-3 21:48
标题: 初学单片机C语言,为什么这结果?求两数的差值,不想引入负值,就大的减小的,可是


unsigned int        a,b,c;

        SCON = 0x50; //串口方式1,允许接收
        TMOD = 0x20; //定时器1定时方式2
        TCON = 0x40; //设定时器1开始计数
        TH1 = 0xE8;        //11.0592MHz 1200波特率
        TL1 = 0xE8;
        TI = 1;
        TR1 = 1; //启动定时器
        

while(1)
        {
        scanf("%d%d",&a,&b);  
        if(a>b)
                {
                        c=a-b;
                }
    c=b-a;        
        printf("a=%d,b=%d,c=%d\n",a,b,c);
        }               
}

作者: Hephaestus    时间: 2023-1-4 02:39
你少写了一个else
作者: xuyaqi    时间: 2023-1-4 06:45
if(a>b)
{
        c=a-b;
}
else
{
         c=b-a;
}
printf("a=%d,b=%d,c=%d\n",a,b,c);
作者: devcang    时间: 2023-1-4 07:30
while(1){
        scanf("%d%d",&a,&b);  
        if(a>b){
                c=a-b;
        }else
                c=b-a;        
        printf("a=%d,b=%d,c=%d\n",a,b,c);
}

作者: 乐鱼居    时间: 2023-1-4 07:43
while(1)
        {
        scanf("%d%d",&a,&b);  
        c=b-a;  
        if(a>b)
                {
                        c=a-b;
                }      
        printf("a=%d,b=%d,c=%d\n",a,b,c);
        }               
}
作者: ijf    时间: 2023-1-4 08:02
最后你写的 c=b-a,再输出的。
作者: bigbigcong    时间: 2023-1-4 09:15
c=b-1;改成else
作者: tyrl800    时间: 2023-1-4 09:15
if语句没掌握好,仔细看看
作者: xiaoshan7748    时间: 2023-1-4 09:38
C = b - a;这句前面加一个else就能得到你想要的结果了,不然你的程序每次都会执行C = b - a;
作者: Longan.Wang    时间: 2023-1-4 09:58
掉了一个else
while(1)
{
        scanf("%d%d",&a,&b);  
        if(a>b)
        {
             c=a-b;
         }
         else
         {
              c=b-a;        
        }
        printf("a=%d,b=%d,c=%d\n",a,b,c);
}

作者: coody_sz    时间: 2023-1-4 11:08
少了else,所以后面那句必然执行,就错了。初学者要认真看书,理解指令。
作者: 大IGBT    时间: 2023-1-4 22:40
感谢各位指点




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1