[开发工具] 紧急求助STVD 整型变量为何赋值不能大于32767

[复制链接]
2030|8
 楼主| gmgmgm 发表于 2015-8-15 09:02 | 显示全部楼层 |阅读模式
STVD+COSMIC 开发环境
这个问题发现很久了,一直没找到原因,
如定义一个变量
volatile int  a;或者 unsigned int a;
这个a数值应该在0~65535,但在使用时这个变量超过32767时就会出错,如a=32768,这样赋值就会提示“数据超出范围”。

比如两个此类型变量进行运算,结果大于32767时就会出错,计算结果会是个错误的数据,编译时并不提示警告;
或者在进行条件判断时如 if(a>32768)   这样编译器就是提示警告“数据超出范围”;

有人知道这个问题应该怎么解决吗?谢谢
戈卫东 发表于 2015-8-15 09:09 | 显示全部楼层
16比特的int本来就无法取值到32768,它的取值范围是-32768到32767
 楼主| gmgmgm 发表于 2015-8-15 09:11 | 显示全部楼层
戈卫东 发表于 2015-8-15 09:09
16比特的int本来就无法取值到32768,它的取值范围是-32768到32767

如超过32767的数值该怎样定义变量?是否该定议为long 长整形方式?
戈卫东 发表于 2015-8-15 09:17 | 显示全部楼层
定义成unsigned int应该可以允许32768~65535的取值。。。。。和运算
 楼主| gmgmgm 发表于 2015-8-15 09:26 | 显示全部楼层
戈卫东 发表于 2015-8-15 09:17
定义成unsigned int应该可以允许32768~65535的取值。。。。。和运算

试过这样定议也不行,以前用keil不存在这样的情况,现在蒙了,百度了下,也有网友遇到这样的情况,但并没找到解决的方法,刚开始因为这样的问题搞了好久,运算数据出错了折腾了好久才发现是这个数值超出32767就不行了。
 楼主| gmgmgm 发表于 2015-8-15 09:44 | 显示全部楼层
戈卫东 发表于 2015-8-15 09:17
定义成unsigned int应该可以允许32768~65535的取值。。。。。和运算

刚试过了,定义成unsigned int应该可以允许32768~65535的取值  是对的哦,问题解决了,谢谢,结贴了
丁弋宇 发表于 2015-8-15 09:54 | 显示全部楼层
diweo 发表于 2015-8-15 22:20 | 显示全部楼层
我也是醉了。。。
代理电 发表于 2015-8-16 01:04 | 显示全部楼层
有符号和无符号,整数有符号就是双精度。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

766

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部