C错误: lvalue required as left operand of assignment

标签 c

int i;
float h;

1/h=0;
for(i=1;1<=1000;++i)
{
    (1/h)+=(1/i);
    printf("%f",h);
}

这是我的代码。我试图根据这个公式找到 h 的值:

(1/h)=(1/1)+(1/2)+(1/3)+....+(1/1000)

但是我需要执行 1000 步才能找到 h

(1/1)

(1/1)+(1/2)

(1/1)+(1/2)+(1/3)

依此类推,直到

(1/1)+(1/2)+(1/3)+...+(1/1000)

我认为我的循环是正确的,但问题是我收到此错误消息

[Error] lvalue required as left operand of assignment

对于行 1/h=0(1/h)+=(1/i) 那么我的错误是什么以及解决方法?谢谢。

最佳答案

因为 1/h 是一个表达式而不是左值,所以您不能分配给表达式。您可以在 中了解什么构成左值标准。

试试这个

int i;
double h;
double u;

u = 0;
for (i = 1 ; i <= 1000 ; ++i)
    u += 1.0 / (double) i;
h = 1.0 / u;

fprintf(stdout, "1/h = %f\n", h);

该值是否正确?

关于C错误: lvalue required as left operand of assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34933924/

相关文章:

C语言: if() with no else(): using braces fails

c++ - 基于 pthread 的多功能多线程实用程序库

c - 如何根据操作数的顺序进行 C 赋值

c - 在UNIX系统编程中,send和sendto系统调用之间有什么区别?

c++ - 我如何在小型 c++ 项目中使用 tesseract ocr(或任何其他免费的 ocr)?

python - 如何查找与CPython堆栈框架的执行相关的C堆栈指针

c - 缺少 PDB 文件

C: SEGFAULT with realloc on char **

c - 在 execvp() 上获取无限循环

c - vim 在 rsync 后替换 printf 上的奇怪字符