Code Composer Studio使用问题:MSP430F5529P计算结果异常求助
MSP430幂计算结果为负数的问题解决
核心原因:printf格式符不匹配
你的代码里,变量b是long类型(MSP430上为32位),但printf中使用了对应16位int类型的%d格式符。MSP430的int默认是16位,用%d打印32位long时,只会读取低16位数据。13的5次方是371293,它的低16位对应有符号16位int值就是-21923,这就是输出负数的根本原因。
修复方法
1. 修正printf格式符
将打印语句中的%d替换为%ld(专门用于long类型的格式符):
printf("%d to the power of %d is %ld\n", a, p, b);
2. 确认项目编译配置(排除设置问题)
如果仍怀疑项目属性有误,可检查以下配置:
- 打开CCS项目属性,进入
Build > ARM Compiler > Advanced Options > Data Model - 确认
Default Data Model设置为ILP32(MSP430默认配置,保证int为16位、long为32位,与代码逻辑匹配) - 确保
Enable C99选项已勾选,避免类型兼容问题
修复后验证
修改代码并重新编译运行,输出会正确显示:13 to the power of 5 is 371293
内容的提问来源于stack exchange,提问作者Aj Graham
相关产品推荐
相关产品推荐

