为什么这个简单的程序不打印?

时间:2015-09-29 07:58:14

标签: c

我写了一个简单的程序,应该添加1和53,然后返回54.但是它显然没有做任何事情。没错,什么都没有。

该文件保存为firstEx.c,我编译并运行如下

$ gcc -o firstEx firstEx.c
$ ./firstEx

一切顺利,但我看不到输出。 有人可以帮忙吗? (我对C来说是全新的。)

以下是代码:

#include <stdio.h>

int main()
{ 
  int var1, var2;
  var1 = 1; 
  var2 = 53;
  void add_two_numbers (int var1, int var2);
  return 0;
}

void add_two_numbers (int a, int b) 
{ 
  int c;
  c = a + b; 
  printf ("%d\n", c); 
}

1 个答案:

答案 0 :(得分:11)

该行

void add_two_numbers (int var1, int var2);

是一个函数原型,不是对所述函数的调用。它是不寻常在功能中间看到它但它确实有效,因为它只是一种符合标准的声明风格({{1 }})。

要实际调用该功能,您必须使用以下内容:

ISO C11 6.7

当你调用它时,你还应该确保函数原型在范围内,既可以预先提供原型,也可以在调用之前简单地定义函数。我从以下内容开始:

add_two_numbers (var1, var2);

如果你想保持功能的顺序相同,原型方法可以按如下方式进行:

#include <stdio.h>

void add_two_numbers (int a, int b) {
    int c;
    c = a + b;
    printf ("%d\n", c);
}

int main (void) {
    int var1, var2;
    var1 = 1;
    var2 = 53;
    add_two_numbers (var1, var2);
    return 0;
}

其他一些事情只是为了让你思考:

  • 您应该根据意图命名您的功能。大多数代码切割器都会期望一个名为#include <stdio.h> void add_two_numbers (int, int); int main (void) { int var1, var2; var1 = 1; var2 = 53; add_two_numbers (var1, var2); return 0; } void add_two_numbers (int a, int b) { int c; c = a + b; printf ("%d\n", c); } 的函数添加数字而返回结果,而不是打印出总和。或许更好的名字可能是add_two_numbers
  • 没有必要始终使用变量,除非您打算让值变化:-)整个print_sum_of_two_numbers函数可以缩小到单行add_two_numbers
  • 同样,printf ("%d", a + b);的前四行可以缩减为main
  • 从C99开始,您不再需要从add_two_numbers (1, 53);显式返回零,它将自动返回零&#34;自动&#34;如果你退出底部。有些人可能仍然喜欢明确,有很多像我这样的老人会因为习惯而把它放进去,但不再需要了。

通过所有这些变化,你可以得到更简洁的结论:

main