我在哪里声明x和y来让这个c代码工作?

我在哪里声明x和y来让这个c代码工作?,c,undeclared-identifier,C,Undeclared Identifier,我有: #包括 整数和(整数x,整数y); 主要() { 积分=和(10,11); printf(“%i和%i之和为:%i\n”,x,y,theSum); } 整数和(整数x,整数y) { 返回x+y; } 然而,当我编译和运行它时,它说x和y是未声明的?非常感谢您的帮助。谢谢您必须在main中声明x和y,这样您就可以调用sum(x,y),而不是在两个文本上调用它。目前,x和y仅在函数sum中定义。您必须在main中声明x和y,以便调用sum(x,y),而不是在两个文本上调用它。目前,x和y仅

我有:

#包括
整数和(整数x,整数y);
主要()
{
积分=和(10,11);
printf(“%i和%i之和为:%i\n”,x,y,theSum);
}
整数和(整数x,整数y)
{
返回x+y;
}

然而,当我编译和运行它时,它说x和y是未声明的?非常感谢您的帮助。谢谢

您必须在main中声明x和y,这样您就可以调用sum(x,y),而不是在两个文本上调用它。目前,x和y仅在函数sum中定义。

您必须在main中声明x和y,以便调用sum(x,y),而不是在两个文本上调用它。目前,x和y仅在函数sum中定义。

x和y变量仅作为参数传递给函数。您将无法引用主函数中的那些。如果你想,它会是这样的:

 #include <stdio.h>

 int sum ( int x, int y );

 main ()
 {
 int theSum = sum (10, 11);
 printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
 }

 int sum ( int x, int y )
 {
 return x + y;
 }
#包括
整数和(整数x,整数y);
主要()
{
int x=10;
int y=11;
积分=和(x,y);
printf(“%i和%i之和为:%i\n”,x,y,theSum);
}
整数和(整数x,整数y)
{
返回x+y;
}

这应该行得通。我希望这有帮助

x和y变量仅作为参数传递给函数。您将无法引用主函数中的那些。如果你想,它会是这样的:

 #include <stdio.h>

 int sum ( int x, int y );

 main ()
 {
 int theSum = sum (10, 11);
 printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
 }

 int sum ( int x, int y )
 {
 return x + y;
 }
#包括
整数和(整数x,整数y);
主要()
{
int x=10;
int y=11;
积分=和(x,y);
printf(“%i和%i之和为:%i\n”,x,y,theSum);
}
整数和(整数x,整数y)
{
返回x+y;
}

这应该行得通。我希望这有帮助

在调用sum之前声明x和y:

#include <stdio.h>

int sum ( int x, int y );

main ()
{
    int x = 10;
    int y = 11;
    int theSum = sum (x, y);
    printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
}

int sum ( int x, int y )
{
    return x + y;
}

在调用sum之前声明x和y:

#include <stdio.h>

int sum ( int x, int y );

main ()
{
    int x = 10;
    int y = 11;
    int theSum = sum (x, y);
    printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
}

int sum ( int x, int y )
{
    return x + y;
}

main
中,您既没有声明
x
也没有声明
y
——您只是传入了文本值10和11。在
sum
方法的范围之外,两个名称都没有任何含义。快速修复:

main ()
{
int x = 10;
int y = 11;
int theSum = sum (x, y);
 printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
 }

main
中,您既没有声明
x
也没有声明
y
——您只是传入了文本值10和11。在
sum
方法的范围之外,两个名称都没有任何含义。快速修复:

main ()
{
int x = 10;
int y = 11;
int theSum = sum (x, y);
 printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
 }

在第三行中,您只需声明一个函数
sum
,它包含两个参数,都是整数,分别称为
x
y
。您还没有声明任何变量。这些参数只能在函数本身内部引用。下面是一个简化,这将在这个阶段帮助您,但您应该尝试阅读一本基本的编程书。Kernighan和Ritchie的“C编程语言”是一个很好的起点

变量是按名称引用的内存块。在程序的生命周期中,它们可以接受任何值(它们的类型),因此被称为“变量”。必须在使用前声明;您可以通过告诉编译器它们的类型和名称来实现这一点
inta
的意思是“为我保留一块足以容纳任何整数的内存,稍后让我用名称
a
”来引用它。”。您可以为它赋值:
a=10
,您可以使用它:
a+20

您需要了解参数和变量之间的差异,才能了解这里的情况。函数的参数基本上是仅在函数生命周期内存在的变量。这是你的
总和

main()
{
    int x = 10;
    int y = 11;
    int theSum = sum(x, y);
    // etc.
请注意,顶行看起来就像一个变量声明
intx
。那是因为它是
x
y
是可以在函数中使用的变量

通过传入值调用
sum
。实际上,编译器用传入的值替换函数中的
x
y
。在您的情况下,您传递的是文本:10和11。当程序调用
sum
时,参数
x
y
的值为10和11,因此返回值变为
return 10+11当然是21

请记住,参数
x
y
仅存在于该函数中。您只能在您的职能范围内引用它们。为什么?因为每对花括号
{
}
定义了一个范围,在该范围内声明的任何内容都只能在该范围内使用。这包括变量和参数

这里有一个更完整的例子。我更改了字母,以便您可以看到使用变量和参数的不同方式:

int sum(int x, int y) {
    return x + y;
}
#包括
整数和(整数x,整数y);
主要()
{
/*我们声明我们的变量*/
INTA;
int b;
/*我们给它们赋值*/
a=10;
b=11;
/*我们将它们作为参数传递给求和函数*/
积分=和(a,b);
/*我们再次使用它们作为参数,调用printf函数*/
printf(“%i和%i之和为:%i\n”,a,b,theSum);
}
整数和(整数x,整数y)
{
返回x+y;
}

在第三行中,您只需声明一个函数
sum
,它包含两个参数,都是整数,分别称为
x
y
。您还没有声明任何变量。这些参数只能在函数本身内部引用。下面是一个简化,这将在这个阶段帮助您,但您应该尝试阅读一本基本的编程书。Kernighan和Ritchie的“C编程语言”是一个很好的起点

变量是按名称引用的内存块。在程序的生命周期中,它们可以接受任何值(它们的类型),因此被称为“变量”。必须在使用前声明;您可以通过告诉编译器它们的类型和名称来实现这一点
inta
的意思是“为我保留一块足以容纳任何整数的内存,稍后让我用名称
a
”来引用它。”。您可以给它赋值:
a=10