始终打印相同的浮点值

-3 c floating-point gcc

该程序是关于t为的不同值打印浮点值i,但是每次都打印相同的值。即使的值t改变了,它也总是为的每个值打印零n

为什么会这样呢?

#include <stdio.h>

int main(){
    float n;
    float sum=0,t,s=1,i;
    scanf("%f",&n);
    for(i=0;i<n;i++){

        t=(100/(1+2i));
        printf("\n%f",t);
    }
}
Run Code Online (Sandbox Code Playgroud)

输入5

输出:

0.000000
0.000000
0.000000
0.000000
0.000000
Run Code Online (Sandbox Code Playgroud)

这是ideone.com中的结果。

dbu*_*ush 5

问题在这里:

t=(100/(1+2i));
Run Code Online (Sandbox Code Playgroud)

看来您打算将2乘以i,但忘记了乘法运算符*。相反2i,您拥有的实际上是一个复数常数。请注意,这不是标准C,而是GCC扩展名(-pedantic开关会发出警告)。

添加乘法运算符,它将按预期工作。

t=(100/(1+2*i));
Run Code Online (Sandbox Code Playgroud)