完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
unsigned long int Vcc;
main() { while (1) { Vcc = 1024*250; } } vcc出来的结果为什么不是256000,而是4294961152 环境是ST Visual Develop + Cosmic 4.2.4 |
|
相关推荐
1个回答
|
|
在STM8微控制器中,乘法运算出错的原因可能是由于整数溢出。在您提供的代码中,`Vcc` 被声明为 `unsigned long int` 类型。`unsigned long int` 类型在STM8中通常是16位的,其最大值是65535(即2^16 - 1)。
当您执行 `Vcc = 1024 * 250;` 时,计算结果为 256000,这超出了 `unsigned long int` 类型的最大值。因此,发生了整数溢出,导致结果不正确。 要解决这个问题,您可以使用更大的数据类型,例如 `unsigned long long int`,它通常是32位的,最大值是4294967295(即2^32 - 1)。这样,乘法结果就不会溢出了。 修改后的代码如下: ```c unsigned long long int Vcc; main() { while (1) { Vcc = 1024 * 250; } } ``` 这样,`Vcc` 的结果将是正确的256000。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1646 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
993 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
692 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1611 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
543浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 06:54 , Processed in 0.642940 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号