打印

pmlab x 里面小减大会出问题?

[复制链接]
609|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llljh|  楼主 | 2020-9-9 21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pmlab x 里面小减大会出问题?

使用特权

评论回复
沙发
llia| | 2020-9-9 21:41 | 只看该作者

什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
板凳
llljh|  楼主 | 2020-9-9 21:44 | 只看该作者
我在PMLAB X 里面定义了两个unsigned int的数,在做减法的时候发现一个现象:98-99 结果是65535,0-1000的结果是64536。是无符号的数,为何会这样?

使用特权

评论回复
地板
wangzsa| | 2020-9-9 21:47 | 只看该作者
在编译器里面可以设置么?

使用特权

评论回复
5
llljh|  楼主 | 2020-9-9 21:50 | 只看该作者
我想要的结果是小减大结果为0,该在哪里设置?

使用特权

评论回复
6
gongche| | 2020-9-9 22:01 | 只看该作者
无符号可不就是这样么,没见过减法还自带限幅的

使用特权

评论回复
7
huanghuac| | 2020-9-9 22:05 | 只看该作者
你得用计算机体系来理解这个问题,借位进位在底层是不会变的。有小减大的需求就用有符号,或者事先判断大小

使用特权

评论回复
8
happy_10| | 2020-9-9 22:07 | 只看该作者
98-99 结果为 65535,是产生了借位,STATUS寄存器中C比特置位,指示这种情况。

使用特权

评论回复
9
zhuhuis| | 2020-9-9 22:11 | 只看该作者
这个减法真实的结果是-1

使用特权

评论回复
10
zwll| | 2020-9-9 22:14 | 只看该作者
只有使用有符号数才能正确表达负数

使用特权

评论回复
11
dingy| | 2020-9-9 22:19 | 只看该作者
开发者需要确保程序中的计算结果,在任何情况下,都是使用最合适的数据类型来表达。

使用特权

评论回复
12
supernan| | 2020-9-9 22:22 | 只看该作者
否则程序就会出错。这一点是需要格外当心的。

使用特权

评论回复
13
pangb| | 2020-9-9 22:27 | 只看该作者
你自己都知道无符号,你还问个负数怎么显示。

使用特权

评论回复
14
xxmmi| | 2020-9-9 22:30 | 只看该作者
当然显示没错,是你定义类型有错。

使用特权

评论回复
15
llia| | 2020-9-9 22:34 | 只看该作者
这跟Mplab无关,这个是C语言本身的特性。

使用特权

评论回复
16
langgq| | 2020-9-9 22:36 | 只看该作者
严重怀疑你不是专业编程的

使用特权

评论回复
17
happy_10| | 2020-9-9 22:45 | 只看该作者
基础C语言的数据类型的问题...翻翻书吧.

使用特权

评论回复
18
chenho| | 2020-9-9 22:48 | 只看该作者
这个和环境没关系。

使用特权

评论回复
19
pengf| | 2020-9-9 22:51 | 只看该作者
用带符号数据类型来解决你的问题吧。

使用特权

评论回复
20
liuzaiy| | 2020-9-9 22:54 | 只看该作者
无符号数的溢出。如果你想要小减大等于0,那在减之前加一个判断就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

11301

帖子

6

粉丝