你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

if比较大小,不转换类型,会影响其它不相干的变量计算

[复制链接]
wang479871 提问时间:2018-10-18 17:28 /
阅读主题, 点击返回1楼
收藏 评论17 发布时间:2018-10-18 17:28
17个回答
wolfgang2015 回答时间:2018-10-19 11:10:05
统一转换成为字符串来比较?或者BCD码?

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

toofree 回答时间:2018-10-19 12:51:50
数据类型,只要不超过32位,就不需要关心。8位机,最大能表示的数据只有32位的。
经测试,没发现有影响Flow变量的情况发生。

至于判断数据类型,你完全没必要关心。类型不同,无论是否隐性转换,只与程序执行的指令条数有关系。

下面写了三个延时函数,都可以延时。C代码完全相同,参数类型不同,因此编译结果不同。
假如要延时时100,那么Delay8(100)、Delay16(100)、Delay32(100),都可以执行,都能起到延时的效果,但是Delay8(100)用时最短。
傲游截图20181019124709.png

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

sincomaster 回答时间:2018-10-19 15:13:09
toofree 发表于 2018-10-19 12:51
数据类型,只要不超过32位,就不需要关心。8位机,最大能表示的数据只有32位的。
经测试,没发现有影响Flow ...

toofree大神好!我有点疑问?
如说得不对请见谅(我是初学者)
这三个延时函数都是形参,相当于赋值运算,100刚好在u8类型内,不超过255都没问题,
但楼主的是双目比较运算,左值是u16类型,右值是常数,经过分析他也发现右值不超过32767就没问题,不会调用类型转换,所以我不明白常数在COSMIC编译器是什么类型,
tanic 回答时间:2018-10-19 16:20:58
常数不强制转换  那是带符号的
一个带了符号 另外一个就强制带符号了
(我瞎说的)

随便找一段库里面的常数宏
#define  VDD_VALUE                    ((uint32_t)3300U) /*!< Value of VDD in mv */
#define  TICK_INT_PRIORITY            ((uint32_t)0x00U) /*!< tick interrupt priority */
#define  USE_RTOS                     0U
#define  PREFETCH_ENABLE              0U
#define  ART_ACCLERATOR_ENABLE        0U /* To enable instruction cache and prefetch */
stm1024 回答时间:2018-10-19 17:32:08
你把编译器优化全关了再试试?我怀疑是在编译过程中,没有做类型转换,编译器做了某种优化措施。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

toofree 回答时间:2018-10-19 17:41:18
sincomaster 发表于 2018-10-19 15:13
toofree大神好!我有点疑问?
如说得不对请见谅(我是初学者)
这三个延时函数都是形参,相当于赋值运算,100刚 ...

一般的编译器,没有特别修饰的情况下,常数都是有符号整型。
jy04706985 回答时间:2018-10-20 08:34:07
1,可能访问越界了。
2,编译器优化了,试试加volatile

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

watershade 回答时间:2018-10-21 16:58:16
和某层楼的朋友一个观点,默认是带符号的65000如果不做定义,就按照有符号存储。不知道stm8到底是怎么存储32位,16位的数据的。但是看你的汇编代码,似乎STM8的寻址是按照16位来寻址的。应该可以推测一点是如果你比较一个8位无符号变量和一个不做特殊定义的8位长度数据。应该不会出这个问题。

你的这个案例还真是给上了一课。

另外没看到你说的影响到flow的问题。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版