You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何求和结果输出为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:24:59