找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1237|回复: 5
打印 上一主题 下一主题
收起左侧

单片机C语言减法指令问题

[复制链接]
跳转到指定楼层
楼主
ID:1017978 发表于 2022-4-16 05:18 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序:if(k3==0){delay(20);if(k3==0){i=i+2;if(i≥10){i=10;}}}
if(k4==0){delay(20);if(k4==0){i=i-2;if(i≤0){i=0;}}}

问:为什么减到小于0后,i不等于0,而是一个很大的数。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:91150 发表于 2022-4-16 10:30 | 只看该作者
本帖最后由 wjhhhhh 于 2022-4-16 10:32 编辑

小于、等于0后继续减2就变成了65533(0xFFFD,对应着char类型0~65535)。if(k4==0){i=i-2;if(i≤0){i=0;}}改成if((k4==0)&&(i>=2)){i=i-2;} 试一试。
回复

使用道具 举报

板凳
ID:301191 发表于 2022-4-16 16:55 | 只看该作者
顶一下
回复

使用道具 举报

地板
ID:883242 发表于 2022-4-16 19:26 | 只看该作者
wjhhhhh 发表于 2022-4-16 10:30
小于、等于0后继续减2就变成了65533(0xFFFD,对应着char类型0~65535)。if(k4==0){i=i-2;if(i≤0){i=0;}} ...

关键问题在于i的类型,如果是unsigned那么你写的对,如果是signed那么楼主写的对,不用改,看到很大的数很可能是IDE显示的问题,不是写的有问题。
回复

使用道具 举报

5#
ID:1017978 发表于 2022-4-17 19:18 来自手机 | 只看该作者
wjhhhhh 发表于 2022-4-16 10:30
小于、等于0后继续减2就变成了65533(0xFFFD,对应着char类型0~65535)。if(k4==0){i=i-2;if(i≤0){i=0;}} ...

有用,谢了,老哥
回复

使用道具 举报

6#
ID:1017978 发表于 2022-4-17 19:18 来自手机 | 只看该作者
Hephaestus 发表于 2022-4-16 19:26
关键问题在于i的类型,如果是unsigned那么你写的对,如果是signed那么楼主写的对,不用改,看到很大的数 ...

有用,我两个都试了一下,确实是,谢了,老哥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表