打印
[STM8]

stm8s||iar unsigned int 输出值得问题

[复制链接]
2744|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mage心寒|  楼主 | 2014-5-27 11:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,我的printf是以前用的在stm32上和lpc2214上都没有问题,但是一直到iar上对stm8s编程时定义的unsigned int输出值大于三万多就不对了,三万以下都是正确的我也不知道什么原因。。有遇到过这样的问题的吗?还有在编译器printf貌似只能用%d来打印,小数什么的不知道什么搞?
沙发
airwill| | 2014-5-27 12:26 | 只看该作者
本帖最后由 airwill 于 2014-5-27 16:59 编辑

printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型.例如,在打印整数是使用%d符号,在打印字符是用%c 符号.这些符号被称为转换说明.因为它们指定了如何不数据转换成可显示的形式.下列列出的是ANSI C标准peintf()提供的各种转换说明.
 
          转换说明及作为结果的打印输出
%a                浮点数、十六进制数字和p-记数法(C99)
%A    浮点数、十六进制数字和p-记法(C99)
%c    一个字符 
%d    有符号十进制整数 
%e    浮点数、e-记数法
%E    浮点数、E-记数法
%f    浮点数、十进制记数法  
%g    根据数值不同自动选择%f或%e.
%G    根据数值不同自动选择%f或%e.
%i               有符号十进制数(与%d相同)
%o    无符号八进制整数
%p    指针    
%s    字符串
%u    无符号十进制整数
%x    使用十六进制数字0f的无符号十六进制整数 
%X    使用十六进制数字0f的无符号十六进制整数
%%    打印一个百分号


%d是有符号十进制整数, 当然出问题咯, 试试 %u 吧

使用特权

评论回复
评论
mage心寒 2014-5-27 16:02 回复TA
我没说清楚,用%f这些打印错误。。。可能跟我的printf函数有关。。 
mage心寒 2014-5-27 16:00 回复TA
我知道这些,不过还是谢谢。。 
板凳
mmuuss586| | 2014-5-27 13:18 | 只看该作者
楼上正解;
PRINTF百度查下就知道了

使用特权

评论回复
地板
i55| | 2014-5-27 13:22 | 只看该作者
废话,stm8的int型最大32767,虽然你定义的是unsigned但是打印用signed自然溢出了。

使用特权

评论回复
评论
mage心寒 2014-5-27 16:10 回复TA
刚sizeof了下 int是16位的,在8s.h文件里面定义32是long类型 的tydefine。。。谢谢。。。 
5
mage心寒|  楼主 | 2014-5-27 15:59 | 只看该作者
i55 发表于 2014-5-27 13:22
废话,stm8的int型最大32767,虽然你定义的是unsigned但是打印用signed自然溢出了。 ...

哪里有定义,貌似就这个数值区间。。谢谢。。

使用特权

评论回复
6
i55| | 2014-5-27 16:53 | 只看该作者
所以用stdint.h里面的类型,int8_t、int16_t、int32_t、uint8_t、uint16_t、uint32_t就不会混乱,这是C99标准里面的通用类型,谭浩强那个老邦子连C99都不知道。

使用特权

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

本版积分规则

19

主题

1019

帖子

13

粉丝