printf在尝试打印double时在C中打印奇怪的字符

时间:2015-03-06 14:10:32

标签: c printf

我正在尝试使用两个代码中的许多printf语句检查代码,以确保它们在不同的地方生成相同的数字。我在其中一个代码中遇到了一个问题,我的printf语句写出了一个奇怪的组合,所以字符(例如X =-Ód½u?ɱÛiR¿和ÀrͲägS?x©b $ÜñK?)。

这是代码示例:

for (i=0;i<np;i++){
            for (j=0;j<nv;j++){
                    aux1=RASEC*uu[j];
                    aux2=RASEC*vv[j];
                    if((i==456) && (j==5))printf("%g %g %g %g %g\n",uu[j],vv[j],RASEC,aux1,aux2);

            }
}

任何人都可以帮助解决为什么会发生这种情况以及如何解决这个问题吗?

非常感谢!

普里纳

编辑:抱歉忘了添加我要打印的所有数字都是双打。

1 个答案:

答案 0 :(得分:0)

使用%lf格式指令打印双打。

另外,请注意使用printf格式指令匹配要打印的值的类型。为了确保它们匹配,您可以将它们转换为所需的类型:

printf("%lf %lf %lf %lf %lf\n",
        (double) uu[j],
        (double) vv[j],
        (double) RASEC,
        (double) aux1,
        (double) aux2);