C语言编写员工薪资调整算法运行总返回0且报错如何解决?
问题原因
- 核心错误在第14行的
printf语句:你给%f格式化符传入了&readjustedSalary,这里的&是C语言的取地址运算符,实际传入的是readjustedSalary变量的内存地址,不是变量里存储的薪资计算结果。 - 编译器给出的警告已经明确了类型不匹配问题:
%f期望接收float/double类型的数值参数,你传入的是float *(浮点型指针,即内存地址)类型的参数,程序运行时会把地址值错误解析为浮点数,所以才会输出0。
修复方法
直接删除printf参数里readjustedSalary前面的&即可,修改后代码行如下:
printf("Readjusted salary: %f", readjustedSalary);
补充说明:初学者很容易搞混scanf和printf的参数要求,scanf需要传入变量地址才能把输入的值写入对应内存,所以参数要加&;而printf只需要读取变量的数值,不需要加取地址符。
内容的提问来源于stack exchange,提问作者Lucas Moro
相关产品推荐
相关产品推荐

