c - 新手遇到错误: expected ')' before ',' token

标签 c

我正在编写一个计算两个值的平方的程序(我必须使用一个函数。)我确信有很多错误,但我似乎无法将它们挑出来:

#include <stdio.h>
#include <stdlib.h>
#include "header.h"

int integer1, integer2, total = 0;
int squared(int integer1, int integer2);
int main(void)
{
   printf("Enter two numbers to be Squared\n");
   scanf("%d%d",&integer1,&integer2);
   printf("Square of entered numbers = %d\n", squared(integer1,integer2));

   return 0;
}
int squared(int integer1, int integer2)
{
    int total;
    total = integer1 + integer2;
    return total *= total;
}

头文件:

#ifndef HEADER_H
#define HEADER_H

#define squared

int squared(int integer1, int integer2);

#endif

最佳答案

虽然您实际上不需要为函数 squared 所采用的参数指定类型 int,因为只要 int 就会被假定未指定类型,直接把它们写下来也不错,如下所示:

int squared(int integer1, int integer2, int total);
// instead of
// int squared(integer1, integer2, total);
// both at the prototype and the definition of the function

话又说回来,你可以忽略它。

你的函数squared的定义确实存在问题。您没有使用分号 ;,并且您已经为第一个语句编写了返回,我认为您还不想返回任何内容。您可能只是想要:

int squared(int integer1, int integer2, int total)
{
    total = integer1 + integer2;
    return total *= total;
}

另一件重要的事情是,您从 main 函数调用 squared 函数时减少了 2 个参数。 squared 等待 3,您只需给它 1。您可能想按如下方式调用它:

...
    printf("Square of entered numbers = %d\n", squared(integer1, integer2, total));
...

最后,您不应该使用尚未赋值的变量。 integer1 希望将被分配一个值,integer2希望。但是,当您从 main 调用 squared 时,total 不会被赋值。您可以使用 0 或其他内容来初始化它,如下所示:

...
    int integer1, integer2, total = 0;
...

实际上,您甚至不需要在 main 中包含 total,您的 squared 函数不需要第三个参数只要您在 squared 中声明一个 int Total,就可以保存 total。但我不会讲到这一点...

关于c - 新手遇到错误: expected ')' before ',' token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515750/

相关文章:

c - 输入未知大小的整数数组

c++ - 检测数组外访问冲突

c - 寻找一种在 Linux 中强制进行简短阅读的方法

c - 如何查找文件名的长度?

c - 如果全局变量有默认的外部链接那么为什么我们不能直接在另一个文件中访问它?

c - C中printf的标准定义是什么?

c - 格雷码中的邻居

C:仅打印 2 个数组中的不常见元素

c - 尝试在 C 中的 vector 中分配内存时出现奇怪的错误

c++ - 为什么 std::FILE 是大写字母?