为何求和结果输出为nan?C语言代码问题咨询
C语言代码求和输出nan的原因分析
代码示例
#include <stdio.h> int main(void) { int input, j; float sum; for (j = 1; j <= 2; j++) { printf("Enter the mark for module %d ", j); scanf("%d", &input); sum += input; } printf("The Sum is: %f", sum); return 0; }
输入输出情况
- 输入值:
1,2 - 实际输出:
nan - 期望输出:
3.000
问题原因
- 浮点变量
sum未初始化:声明float sum;时未赋予初始值,它的初始值是内存中的随机垃圾数据,大概率是NaN(非数字)。NaN参与任何浮点运算的结果仍为NaN,最终输出自然是NaN。 - 输入格式与
scanf匹配失败:scanf("%d", &input)仅能读取整数,输入1,2中的逗号会导致第二个scanf读取失败,input的值不会被更新为2,而是保留第一次的1(或未定义的垃圾值)。即便sum初始化正确,最终结果也会是1.000而非期望的3.000。
内容的提问来源于stack exchange,提问作者Hasindu Dahanayake
相关产品推荐
相关产品推荐

