使用gcc编译C程序

dus*_*tin 0 c gcc shebang

我正在关注CUNY的一个例子,我之前从未做过任何事情,所以我可能不知道自己在做什么.

考虑下面的程序.

  1. 我是否需要使用emacs编写的C代码的shebang行?
  2. 当我使用该行进行编译时,gcc -g -o forwardadding forwardadding.c 我遇到了以下消息:

    forwardadding.c:9:17: error: expected expression before ‘<’ token
    
    Run Code Online (Sandbox Code Playgroud)
  3. 一旦我得到代码编译,我可以使用gdb调试并运行代码更正?

代码:

#include <stdio.h>
#include <math.h>

main()
{
    float sum, term;
    int i;
    sum = 0.0;
    for( i = 1; < 10000000; i++)
    {
        term = (float) i;
        term = term * term;
        term = 1 / term;
        sum += term;
    }
    printf("The sum is %.12f\n", sum);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 9

  1. 不需要shebang.您可以添加Emacs模式行注释.

  2. for循环应该是:

    for (i = 1; i < 10000000; i++)
    
    Run Code Online (Sandbox Code Playgroud)

    你的代码缺少第二个i.

  3. 是的,您可以在编译代码后使用GDB.

如果你从10,000,000倒数到数到10,000,000,你会得到更好的数学答案.在大约之后i = 10000,额外的值不会对结果添加任何内容.

请养成编写C99代码的习惯.这意味着你应该写:

int main(void)
Run Code Online (Sandbox Code Playgroud)

具有所需的返回类型intvoid建议.


FDi*_*off 6

你需要在for循环中放一个变量来表示一个完整的表达式(可能是第9行......)

for( i = 1; < 10000000; i++)
Run Code Online (Sandbox Code Playgroud)

改变这个

for( i = 1; i < 10000000; i++)
Run Code Online (Sandbox Code Playgroud)