找回密码
 立即注册

QQ登录

只需一步,快速开始

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

IAR STM8 C语言中定义的unsigned long int数据类型最大值只能是32768

[复制链接]
跳转到指定楼层
楼主
我想在IAR STM8S  中定义一个4字节变量  存放充值的金额,结果当数据  CZ超过32768的时候就错误了!不知道是哪里出问题了~~大神指点下吧~unsigned   long   int   CZ;
.
CZ=CZ+num2;  
.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:562798 发表于 2022-6-7 23:42 | 显示全部楼层
17337161031 发表于 2022-6-7 22:00
你查一下 long int 是几位数据,应该是达到最大值 超出范围

我理解的long  int  应该是4个字节的数据!但是实际上这个值只能取到32767以内
回复

使用道具 举报

板凳
ID:562798 发表于 2022-6-8 17:28 | 显示全部楼层

多谢!我换个类型试试看!
回复

使用道具 举报

地板
ID:562798 发表于 2022-6-8 21:45 | 显示全部楼层
188610329 发表于 2022-6-8 18:02
一般情况下,long是long,int是int。
long int 应该是你自创的类型,自创类型不是不可以,但你如果希望 ...

long 定义的变量一样的不能超过32767  只要超过这个范围一定出错~
回复

使用道具 举报

5#
ID:562798 发表于 2022-6-8 21:45 | 显示全部楼层
17337161031 发表于 2022-6-7 22:00
你查一下 long int 是几位数据,应该是达到最大值 超出范围

4字节的数据
回复

使用道具 举报

6#
ID:562798 发表于 2022-6-8 21:46 | 显示全部楼层
donny123800 发表于 2022-6-8 21:45
long 定义的变量一样的不能超过32767  只要超过这个范围一定出错~

所以不知道是哪里出问题了!多谢大侠指点哈!
回复

使用道具 举报

7#
ID:562798 发表于 2022-6-9 08:23 | 显示全部楼层
Hephaestus 发表于 2022-6-8 22:23
六楼已经贴出编译器手册,那就不是long数据长度的问题,应该出在别的地方,多贴一些代码。

问题就是现在我给变量直接赋值  如果取值在0~32767 这个范围内就正常    取值32768~65536 之间就错误   超出65536就正常  就是不知道是哪里出问题了!本人实在是菜鸟!找不到问题在哪里了!
回复

使用道具 举报

8#
ID:562798 发表于 2022-6-9 11:21 | 显示全部楼层
startxk 发表于 2022-6-9 09:37
int本来不就是16位么? 在很久很久以前,C语言才出现的时候,计算机的字宽是16位,int于是也就是16位. 后来出现 ...

好勒!多谢!按照你这个思路应该是可以解决了!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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