懒惰成性的 2024-03-08 19:08 采纳率: 100%
浏览 7
已结题

为什么执行出来全是00000000


#include<stdio.h>
int main()
{
    double d[] = { 0,1,2,3,4,5,6,7, };
    int i = 0;
    while (i < 8)
    {
        printf("%d", d[i]);
        i++;
    }
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-03-08 19:08
    关注

    小杨2-2 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    在你的代码中,你尝试以整数(%d)的形式打印 double 类型数组的元素。由于类型不匹配,这种行为是未定义的,通常会导致输出不可预期的结果,如你所见的全零。

    问题原因: 对于 double 类型的数据使用了 %d 格式说明符进行输出。

    解决方案:

    1. 应该使用 %f%g 来打印 double 类型的数值。
    2. 如果你确实需要整数形式的输出,可以先将 double 转换为 int 再进行打印。

    修正后的代码:

    #include<stdio.h>
    int main() {
        double d[] = { 0,1,2,3,4,5,6,7 };
        int i = 0;
        while (i < 8)
        {
            printf("%.0f", d[i]); // 使用%f并限制小数点后无数字,效果等同于输出整数部分
            // 或者如果你想强制转换为整数并打印:
            // printf("%d", (int)d[i]);
            i++;
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月9日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日