用long int 定义的变量当大于 32768时就会溢出

[复制链接]
741|8
 楼主| jiajs 发表于 2018-4-12 10:35 | 显示全部楼层 |阅读模式
难道iar c语言中没有真正的long int吗?
zhenykun 发表于 2018-4-12 10:38 | 显示全部楼层

直接定义为unsigned long/long就行了.当然定义成long int/unsigned long int也没错,问题肯定在别的地方,你再找找
wyjie 发表于 2018-4-12 10:42 | 显示全部楼层
如果你想使用c的库函数的话,再2.10A版前的版本,应该在相应的*.xcl文件里将使用printf/sprintf的-e_small_write=_formatted_write注销掉,2.10版的在option里选大模式
jlyuan 发表于 2018-4-12 10:46 | 显示全部楼层
显示浮点数一般要打近10行程序,要根据显示小数点位数先扩大10的N次方倍,然后求10的余数,进行一轮循环,要输出到LED/LCD又要变一个函数,如果用户要求其它的格式,又要辛苦修改一番.用printf/sprintf就避免了这些问题,用一行程序输出所有类型的数据,各种格式不说,还能很方便的输出字符,中文到点阵LCD,要知道怎样用只要看C语言的书就行了.
dengdc 发表于 2018-4-12 10:50 | 显示全部楼层

你用的C编页器支持长整型数就可以在自己变得.H文件中使用,这涉及到你的C编译器的版本,设置等诸多因素.
heweibig 发表于 2018-4-12 10:53 | 显示全部楼层
试了下,没有问题不会溢出的。环境是IAR C/C++ Compiler for MSP430 5.10.1 [Evaluation] (5.10.1.20144)。楼主新建个项目试试,也许是你的编译器设置有问题。
wuhany 发表于 2018-4-12 10:55 | 显示全部楼层

赋值建议写成下面的代码:
a = 132768L;
lizye 发表于 2018-4-12 10:59 | 显示全部楼层


430 long的定义是4个byte的,我在不同的版本的IAR上都试过。
赋值的时候数值后没加L吧
 楼主| jiajs 发表于 2018-4-12 11:03 | 显示全部楼层
嗯,多谢啦,我再看看吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

940

主题

11975

帖子

6

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