C语言含#define宏定义的程序无法输出ST变量问题排查求助
问题原因排查
- 核心问题是整数除法规则的误用:你定义的
TAX_PERCENTAGE是整数7,100也是整数常量,C语言中两个整数相除会执行整数除法,直接舍弃小数部分,所以7 / 100的计算结果是0,赋值给float类型的tax_decimal后就变成0.0,最终ST的计算结果就是0,和你预期的0.42不符。 - 补充验证:你可以在代码里加一行
printf("%f", tax_decimal);,就会发现变量值是0.000000。
修复方案
只需要把除法运算的其中一个操作数改为浮点型即可,有两种常见修改方式:
- 修改除法计算逻辑,把100改为浮点型的
100.0:
#include <stdio.h> #define IC 60 #define TAX_PERCENTAGE 7 int main() { float tax_decimal = TAX_PERCENTAGE / 100.0; float ST = IC * tax_decimal; float total = IC + ST; printf("Price = %d\nTax = %f\nTotal = %f\n",IC, ST,total); return 0; }
- 把宏定义直接改为浮点型常量:
#define TAX_PERCENTAGE 7.0
内容的提问来源于stack exchange,提问作者ask
相关产品推荐
相关产品推荐

