打印

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

[复制链接]
525|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiajs|  楼主 | 2018-4-12 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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语言的书就行了.

使用特权

评论回复
5
dengdc| | 2018-4-12 10:50 | 只看该作者

你用的C编页器支持长整型数就可以在自己变得.H文件中使用,这涉及到你的C编译器的版本,设置等诸多因素.

使用特权

评论回复
6
heweibig| | 2018-4-12 10:53 | 只看该作者
试了下,没有问题不会溢出的。环境是IAR C/C++ Compiler for MSP430 5.10.1 [Evaluation] (5.10.1.20144)。楼主新建个项目试试,也许是你的编译器设置有问题。

使用特权

评论回复
7
wuhany| | 2018-4-12 10:55 | 只看该作者

赋值建议写成下面的代码:
a = 132768L;

使用特权

评论回复
8
lizye| | 2018-4-12 10:59 | 只看该作者


430 long的定义是4个byte的,我在不同的版本的IAR上都试过。
赋值的时候数值后没加L吧

使用特权

评论回复
9
jiajs|  楼主 | 2018-4-12 11:03 | 只看该作者
嗯,多谢啦,我再看看吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

940

主题

11975

帖子

6

粉丝