您的位置 首页 观点

单片机编程时关于int

在进行单片机编程时,我们经常用Int定义变量。以前学C语言时,我知道int它表示的位数跟具体的硬件结构有关。不过看了一本书中慎用int这节后…

在进行单片机编程时,咱们经常用Int界说变量。曾经学C言语时,我知道int它表明的位数跟详细的硬件结构有关。不过看了一本书中“慎用int”这节后,我对int又有了更一步的知道。

本来C言语并没有进一步清晰不同硬件渠道下int位宽由硬件渠道决议这一点,然后导致了对int不同的了解。实际上int并没有详细的位宽约束,是由所用硬件渠道(MCU)和编译器一起决议位宽为多少,通常情况下编译器会将int的位宽定为与所用MCU的位宽共同。

文中也举了两个比如阐明由于对int了解的不行深化而犯的过错。一个是由于将int误了解为32位,而编译器和MCU为16位宽。一个产品需求显现开机后的时刻,显现精度为秒。假如依照int为32位的话,界说secondCount为unsigned int的话,这是肯定能满意要求的。但当int被编译器依照16位来处理的话,最大记载的时刻只能差不到18小时,产品用到正常上班时段是正常的。假如开机时刻长的话,好久才关机一次,那么这个产品就会有问题了。别的一个比如是假如开端一款32位MCU做的产品,后来发现一款16位的MCU能够代替,这时要进行代码的移植。但16位MCU编译器以为int为16位,这是就存在溢出的问题。假如把int替换为long,可能把其他的当地也改动过错。

其实有处理的方法,C言语它本身供给了更为准确的数据类型。char,short,long long 别离严厉对应8位,16位,32位,64位。绝大多数编译器编译出来的成果都满意这种对应联系。

最终,文中给出一个主张,用C言语编程的时分,一定要慎重运用int,最好是不必。

参阅《删繁就简——单片机入门到通晓》

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/262596.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部