始终打印相同的浮点值

时间:2018-08-31 17:41:08

标签: c gcc

此程序是关于为html { margin: 0; padding: 0; height: 100%; } * { margin: 0; padding: 0; box-sizing: border-box; } header { height: 100px; background-color: white; box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); display: flex; justify-content: center; align-items: center; padding-left: 50px; padding-right: 50px; } #header-wrapper { width: 90%; display: flex; justify-content: space-between; align-items: center; } nav a { padding-right: 20px; } #intro { height: 90vh; display: flex; justify-content: center; align-items: center; } #intro-wrapper { display: flex; text-align: center; width: 50%; } #intro-wrapper h1 { font-weight: 700; font-family: 'Raleway', sans-serif; font-size: 2.2em; line-height: 60px; color: #333; } 的不同值打印浮点值t,但是每次都打印相同的值。即使i的值改变了,它也总是为t的每个值打印零。

为什么会这样?

n

输入:5

输出:

#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);
    }
}

这是ideone.com中的结果。

1 个答案:

答案 0 :(得分:4)

问题在这里:

t=(100/(1+2i));

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

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

t=(100/(1+2*i));