Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么C打印的值与PHP打印的值不同?_Php_C - Fatal编程技术网

为什么C打印的值与PHP打印的值不同?

为什么C打印的值与PHP打印的值不同?,php,c,Php,C,这是一个彻头彻尾的问题 这是我的C代码 #include<stdio.h> int main() { int I, X=4; double I0; double COEFF1[7]; double COEFF2[9]; /*Coefficient 1 I0*/ COEFF1[0]=0.0045813; COEFF1[1]=0.0360768; COEFF1[2]=0.2659732; COEFF1[3]=1.2

这是一个彻头彻尾的问题

这是我的C代码

#include<stdio.h>

int main()
{
    int I, X=4;
    double I0;
    double COEFF1[7];
    double COEFF2[9];
    /*Coefficient 1 I0*/
    COEFF1[0]=0.0045813;
    COEFF1[1]=0.0360768;
    COEFF1[2]=0.2659732;
    COEFF1[3]=1.2067492;
    COEFF1[4]=3.0899424;
    COEFF1[5]=3.5156229;
    COEFF1[6]=1.0000000;
    /*Coefficient 2 I0*/
    COEFF2[0]=0.00392377;
    COEFF2[1]=-0.01647633;
    COEFF2[2]=0.02635537;
    COEFF2[3]=-0.02057706;
    COEFF2[4]=0.00916281;
    COEFF2[5]=-0.00157565;
    COEFF2[6]=0.00225319;
    COEFF2[7]=0.01328592;
    COEFF2[8]=0.39894228;

    if(X>=3.75)
    {
        I0=COEFF2[0];
        for(I=1;I<9;I++)
        {
            I0=(3.75/X)*I0+COEFF2[I];
            printf("%i\n", I0);
        }
        //return I0/(sqrt(X)*exp(-X));
    }
    else
    {
        I0=COEFF1[0];
        for(I=1;I<7;I++)
        {
            I0=I0*(X/3.75)*(X/3.75)+COEFF1[I];
        }
        //return I0;
    }

    return 0;
}
#包括
int main()
{
int I,X=4;
双I0;
双系数1[7];
双系数2[9];
/*系数1 I0*/
系数1[0]=0.0045813;
系数1[1]=0.0360768;
系数1[2]=0.2659732;
系数1[3]=1.2067492;
系数1[4]=3.0899424;
系数1[5]=3.5156229;
系数1[6]=1.0000000;
/*系数2 I0*/
系数2[0]=0.00392377;
系数2[1]=-0.01647633;
系数2[2]=0.02635537;
系数2[3]=-0.02057706;
系数2[4]=0.00916281;
系数2[5]=-0.00157565;
系数2[6]=0.00225319;
系数2[7]=0.01328592;
系数2[8]=0.39894228;
如果(X>=3.75)
{
I0=系数2[0];
对于(I=1;I
但是为什么它们不能产生相同的结果呢?


请帮助。我被卡住了。

%I
int
的格式说明符;
I0
有类型
double
,但是
printf
被告知将其解释为
int
。你应该使用
%f
来代替double:

printf("%f\n", I0);

%i
int
的格式说明符;
I0
的类型为
double
,但
printf
被告知将其解释为
int
。对于double,您应该使用
%f

printf("%f\n", I0);

也许这一点也有用

两个程序输出的差异确实可以归因于该行

printf("%i\n", I0);
在C程序中,
I0
被解释为一个整数,但其位模式被存储为
double
类型,该类型使用不同的逻辑来组织位(在标准变体中,也使用不同的位数)。
printf
函数的作用是,它只接受该位模式是什么(长度为整数)并将其像整数一样打印出来-因为您这样告诉它(
%i
),因此程序的输出

PHP使用动态类型定义,以便在使用变量的上下文中解释变量(除非有时通过强制转换或使用settype()强制为特定类型)


也就是说:
$a=1;
将是一个
整数
,但是如果你做另一个赋值,比如
$a+=0.5;
,它将自动转换成一个
浮点。

也许这个位也有用

两个程序输出的差异确实可以归因于该行

printf("%i\n", I0);
在C程序中,
I0
被解释为一个整数,但其位模式被存储为
double
类型,该类型使用不同的逻辑来组织位(在标准变体中,也使用不同的位数)。
printf
函数的作用是,它只接受该位模式是什么(长度为整数)并将其像整数一样打印出来-因为您这样告诉它(
%i
),因此程序的输出

PHP使用动态类型定义,以便在使用变量的上下文中解释变量(除非有时通过强制转换或使用settype()强制为特定类型)


例如:
$a=1;
将是一个
整数
,但是如果你做另一个赋值,比如
$a+=0.5;
,它将自动转换成一个
浮点

很明显,他们正在使用不同的类型打印数据-一组是整数,一组是实数。你想要哪一个?如果你要翻译到PHP进行comparison至少在PHP版本中使用等效的格式字符串,例如
printf(“%f\n”,$i0);
printf(“%f\n”,i0)
在C版本中,我希望PHP打印与C版本相同的结果。早期,他们使用不同的类型打印数据-一组是整数,一组是实数。您想要哪一个?如果您要翻译为PHP进行比较,至少在PHP版本中使用类似于
printf的等效格式字符串(%f\n“,$i0);
printf(“%f\n”,i0)
在C版本中,我希望PHP打印出与C打印相同的结果。我认为每个人都在尝试更正我的C代码。实际上,我正试图让PHP打印出与C相同的数据输出。我仍然在想该怎么做。我可以通过任何方式与您联系吗?我真的需要弄清楚PHP代码:(@benjdewantara我认为,由于答案中所述的原因,您问题中C程序的输出是不正确的。您为什么希望PHP程序给出(数学上的)结果结果也不正确?好的..C是错误的..事实上,我问了一个错误的问题..你能帮我吗?为什么不生成相同的输出,就像我认为每个人都在尝试更正我的C代码一样。我实际上在尝试让PHP像C一样打印相同的数据输出。我仍然在想该怎么做。我可以联系吗我真的需要把PHP代码弄清楚:(@benjdewantara)我认为你问题中C程序的输出是不正确的,因为答案中说明了原因。你为什么希望PHP程序给出(数学上的)结果结果也不正确?嗯..C是错误的..事实上,我问了一个错误的问题..你能帮我吗?为什么不能像这样生成相同的输出