搜索
bottom↓
回复: 12

扒一扒使用MPLAB IDE时遇到的奇葩问题

[复制链接]

出0入0汤圆

发表于 2016-2-1 14:11:26 | 显示全部楼层 |阅读模式
本帖最后由 Lu.Shi 于 2016-2-1 14:11 编辑

使用MPLAB IDE的版本v8.80的时候遇到如下的问题,就是想不通,所以请广大坛友都扒一扒:
1. 如下一图所示,仅仅提示了一个warning:main.c; 302.7 illegal conversion of integer to pointer,编译成功


2. 如下二图所示仅提示一个warning:main.c; 302.7 illegal conversion of integer to pointer,编译成功

3. 如下三图和四图所示,使用该版本的simulate模式仿真,出现图四显示的结果,其中s32parameterCnt和FaultTemp的类型都是32位的有符号整形变量,然后1*200*1000/(-120)不应该等于-1666吗???

真的要凌乱在风中了~~~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-2-1 15:32:11 | 显示全部楼层
奇葩?正常!

出0入0汤圆

 楼主| 发表于 2016-2-1 17:10:54 | 显示全部楼层
xiaoyigechaos 发表于 2016-2-1 14:26
图一和图二没看懂你要说什么意思

图一和图二类似,都是将一个int的值直接赋值给了int*的类型

出0入0汤圆

 楼主| 发表于 2016-2-1 17:13:59 | 显示全部楼层

图一和图二是将int的值赋值给了int*,这个按理来说应该是要报错的吧?图上图四是计算有问题,计算的结果应该是-1666才对,但是仿真的结果却是-28

出0入0汤圆

发表于 2016-2-1 17:20:22 | 显示全部楼层
本帖最后由 xuboluan 于 2016-2-1 17:22 编辑

  楼主我看错了,不好意思

出0入0汤圆

发表于 2016-2-1 19:07:22 | 显示全部楼层
图一图二:http://www.amobbs.com/thread-5640740-1-1.html

出0入0汤圆

发表于 2016-2-1 19:12:03 | 显示全部楼层
图三图四:s32parameterCnt = 1*200*1000         =  0x0D40  = 3392

                                             3392/(-120) = -28

出0入0汤圆

发表于 2016-2-2 08:22:52 来自手机 | 显示全部楼层
这个ide就是奇葩,用ccs编译器

出5入14汤圆

发表于 2016-2-2 09:12:14 | 显示全部楼层
Lu.Shi 发表于 2016-2-1 17:13
图一和图二是将int的值赋值给了int*,这个按理来说应该是要报错的吧?图上图四是计算有问题,计算的结果 ...

楼主你不了解 C 语言的使用细节就把责任推到编译器头上?

C 语言里 ( 1*200*1000 ) 这种常量,默认为 16BIT 整形,结果当然不是你想象的长整型了!

试试这个:( 1l*200l*1000l )

出20入12汤圆

发表于 2016-2-2 12:08:38 | 显示全部楼层
不知道你用的哪个编译器,看结果确实如楼上说的32bit long,16bit int,看下你的s32时怎么定义的吧。

出0入0汤圆

 楼主| 发表于 2016-2-2 15:09:30 | 显示全部楼层
helloshi 发表于 2016-2-1 19:12
图三图四:s32parameterCnt = 1*200*1000         =  0x0D40  = 3392

                                   ...

感谢分析,学习了,有实验了下每个对数据强制类型转换,计算结果正常了。

出0入0汤圆

 楼主| 发表于 2016-2-2 15:10:39 | 显示全部楼层
gaolf_2012 发表于 2016-2-2 12:08
不知道你用的哪个编译器,看结果确实如楼上说的32bit long,16bit int,看下你的s32时怎么定义的吧。 ...

s32 类型就是signed long,楼上分析的是对的,试验了下对数据强制类型转换了一下就正确了

出0入0汤圆

 楼主| 发表于 2016-2-2 15:15:45 | 显示全部楼层
EMC菜鸟 发表于 2016-2-2 09:12
楼主你不了解 C 语言的使用细节就把责任推到编译器头上?

C 语言里 ( 1*200*1000 ) 这种常量,默认为  ...

多谢分析,强制类型之后计算正确了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 23:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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