51单片机 /、* 运算问题

上图看代码

图片发自简书App

图片发自简书App

通过串口输出可得,adc_value=1023,用计算器可算得(1023*4930)/1023=4930,但是在串口得到的却是0.061,很显然值是错的,我们把代码放到Visual Studio中编译来运行

图片发自简书App

结果为4930,值是正常的

原因总结: 在C语言中四则运算默认使用int型变量存储其运算结果,51位单片机是8位的MCU,int型变量只占2字节,则int取值范围为2^8 + 2^8 =65536,而1023*4930已经大于这个值,所以是无法运算的,而在Visual Studio中运行正常,是因为电脑CPU是64位的,int占4字节。更改代码:

图片发自简书App

将结果转换取值范围更大的long类型,结果正常。

图片发自简书App
8/16位系统中变量取值范围
char                      1字节    -128~+127
int                          2字节      -32768~+32767
unsigned int        2字节    0~65535
long int                  4字节 -2147483648~+2147483647


32/64位操作系统中取值范围:
int        -2147483648~2147483647(-2^32~2^32-1   
4个字节
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2.变量和基本类型 3.字符串、向量和数组 4.表达式 5.语句 2.变量和基本类型 c++的算术类型: 一个ch...
    暮落晴空阅读 863评论 0赞 0
  • 1. 数据类型简介及输出 (1) 数据类型简介 数据类型简介: Object - C 数据类型 分为 基本数据类型...
    CityZen_S阅读 8,158评论 1赞 13
  • C语言是有史以来最为重要编程语言,写外挂、做黑客必须掌握的语言。 C/C++是永远不过时的贵族语言,除了纯应用的公...
    C语言学习阅读 1,518评论 1赞 2
  • 早上起床,机械地重复着一些事情,穿衣、刷牙、洗头、剃须、照镜子…… 刷牙的时候,有一块牙膏照着预想的那样,在开始刷...
    木语花颜阅读 780评论 0赞 0
  • 动力锂电池,随着电动汽车行业的逐渐发展也开始大规模的投入使用,但是目前技术条件下一般锂动力电池的寿命要求达到五年以...
    SAKURA_3edb阅读 302评论 0赞 0

友情链接更多精彩内容