Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的声明语句_C_Declaration - Fatal编程技术网

C语言中的声明语句

C语言中的声明语句,c,declaration,C,Declaration,我似乎对把数学搞砸有意见。欢迎提出任何意见或建议 代码如下: int num1, num2, num3, num4, op, ; op = ((1==num3) || (2==num4)); num3 = (num1 + num2); num4 = (num1 * num2); 我一直在尝试很多安排和重新分配。已经编译了很多,但是当5+5=2659043时,出现了一个问题…您没有初始化变量,因此它们的值未定义(可能不是0)。您应该初始化(例如,像这样): 您没有初始化

我似乎对把数学搞砸有意见。欢迎提出任何意见或建议

代码如下:

int num1, num2, num3, num4, op, ;
    op = ((1==num3) || (2==num4)); 
    num3 = (num1 + num2);
    num4 = (num1 * num2);

我一直在尝试很多安排和重新分配。已经编译了很多,但是当5+5=2659043时,出现了一个问题…

您没有初始化变量,因此它们的值未定义(可能不是0)。您应该初始化(例如,像这样):


您没有初始化变量,因此它们的值未定义(可能不是0)。您应该初始化(例如,像这样):


不确定您试图做什么,但这就是您的代码所做的:

int num1, num2, num3, num4, op, ;
这一行通知C编译器需要为5个整数(num1、num2、num3、num4、op)分配空间,这些整数现在可以用作变量,直到作用域过期。不知道为什么会有最后一个“,”您可能想删除它

op = ((1==num3) || (2==num4)); 
如果num3为1,或num4=2,则将op设置为1(真)。否则,将op设置为0(false)

不言自明:将num1和num2相加,并将总和放入num3

num4 = (num1 * num2);
不言自明:将num1和num2相乘,然后将乘积放入num4

我立刻发现你的程序有问题。您正在使用这些变量,但尚未将它们初始化为任何内容。例如,如果num1和num2没有一个值,那么(num1+num2)的和应该如何存在。试试这个:

#include <stdio.h>

int main()
{
   int num1, num2, sum;
   num1 = 1;
   num2 = 2;
   sum = num1 + num2;

   printf("sum = %d\n", sum);
}
#包括
int main()
{
整数num1,num2,和;
num1=1;
num2=2;
总和=num1+num2;
printf(“总和=%d\n”,总和);
}

不确定您想做什么,但这就是您的代码所做的:

int num1, num2, num3, num4, op, ;
这一行通知C编译器需要为5个整数(num1、num2、num3、num4、op)分配空间,这些整数现在可以用作变量,直到作用域过期。不知道为什么会有最后一个“,”您可能想删除它

op = ((1==num3) || (2==num4)); 
如果num3为1,或num4=2,则将op设置为1(真)。否则,将op设置为0(false)

不言自明:将num1和num2相加,并将总和放入num3

num4 = (num1 * num2);
不言自明:将num1和num2相乘,然后将乘积放入num4

我立刻发现你的程序有问题。您正在使用这些变量,但尚未将它们初始化为任何内容。例如,如果num1和num2没有一个值,那么(num1+num2)的和应该如何存在。试试这个:

#include <stdio.h>

int main()
{
   int num1, num2, sum;
   num1 = 1;
   num2 = 2;
   sum = num1 + num2;

   printf("sum = %d\n", sum);
}
#包括
int main()
{
整数num1,num2,和;
num1=1;
num2=2;
总和=num1+num2;
printf(“总和=%d\n”,总和);
}

好的。。。这里有很多错误,但我会逐一检查你在评论中发布的内容

#include <stdio.h>

int main() {
  /*Declare the active agents */
  int num1=0, num2=0, num3=0, num4=0, op = 1 || 2 ;
这里您将num3和num4都设置为零,因为num1+num2是0+0,num1*num2是0*0。你想在扫描后把它移下来

  /* Information Extraction Method */
  printf("YO MOFO!!!Press a number or hit the dirt!!\n");
  scanf("%d", &num1);
  printf("Since you didn't hit the dirt, how about another number?\n");
  scanf("%d", &num2);

  /* Menu (AKA Input */
  printf("If you want to add, press 1 ,\nIf you want to multiply, press 2 ... \n\n ");
  scanf ("%d", &op);
这些printf和scanf都很好。干得好

  /* PROCESS */
  if (op = 1) {num3;};
  if (op = 2) {num4;};
这里有三件事。首先,op=1将1分配给op。与op=2相同。您希望op==1和op==2,如下所示。其结果是,在这些if语句之后,op始终为2

第二件事是,虽然是一个有效的语句,num3;它本身不会做任何事情

最后,虽然它不会伤害任何东西,但在结束大括号后不需要分号

  /* OutPut */
  if (op == 1) {
    printf("Alone, a toothpick is weak, but as part of a sum, your answer is:\n%d"), &num3;
  };

  if (op == 2) {
    printf("Multiplied as a sum of it's parts, your answer is:\n%d"), &num4;
  };
这里您打印出的是num3和num4的地址,而不是它们的值。这就是为什么你看到的大数字没有意义的部分原因,这是内存中num3和num4的地址。只有scanf需要符号(&),printf不需要。另外,由于您的计算是在您从用户处获得数字之前完成的,因此,这些值的实际值始终为0

编辑:事实上,你在这里没有得到正确的数字是因为你根本没有把数字传递给printf。括号外有num3和num4。变量名前仍然不应该有一个符号AND,但它应该是这样的
printf(“乘法…是:\n%d”,num4)
注意
num4
在括号内的位置

  printf("\n\n\n\nMath frum da hud..... Yo. \n\n\nLOL\n >;]");

  /* End Of Program */
  return 0;
}
编辑:为了清晰起见,我已经以一种你想要的方式写了它

#include <stdio.h>

int main() {
  /*Declare the active agents */
  int num1=0, num2=0, num3=0, num4=0, op = 0;

  /* Information Extraction Method */
  printf("YO MOFO!!!Press a number or hit the dirt!!\n");
  scanf("%d", &num1);
  printf("Since you didn't hit the dirt, how about another number?\n");
  scanf("%d", &num2);

  num3 = (num1 + num2);
  num4 = (num1 * num2);      

  /* Menu (AKA Input */
  printf("If you want to add, press 1 ,\nIf you want to multiply, press 2 ... \n\n ");
  scanf ("%d", &op);

  /* OutPut */
  if (op == 1) {
    printf("Alone, a toothpick is weak, but as part of a sum, your answer is:\n%d", num3);
  };

  if (op == 2) {
    printf("Multiplied as a sum of it's parts, your answer is:\n%d", num4);
  };

  printf("\n\n\n\nMath frum da hud..... Yo. \n\n\nLOL\n >;]");

  /* End Of Program */
  return 0;
}
#包括
int main(){
/*声明活动代理*/
int num1=0,num2=0,num3=0,num4=0,op=0;
/*信息提取方法*/
printf(“YO MOFO!!!按一个数字或打土!!\n”);
scanf(“%d”&num1);
printf(“既然你没有碰到灰尘,那么再来一个数字怎么样?\n”);
scanf(“%d”&num2);
num3=(num1+num2);
num4=(num1*num2);
/*菜单(又名输入*/
printf(“如果要加法,请按1;如果要乘法,请按2…\n\n”);
scanf(“%d”和&op);
/*输出*/
如果(op==1){
printf(“单独一根牙签很弱,但作为总数的一部分,您的答案是:\n%d”,num3);
};
如果(op==2){
printf(“乘以各部分之和,您的答案是:\n%d”,num4);
};
printf(“\n\n\n\nMath frum da hud…..Yo.\n\n\nLOL\n>;]”;
/*节目结束*/
返回0;
}

嗯。

好吧……这里有很多错误,但我会逐一检查你在评论中发布的内容

#include <stdio.h>

int main() {
  /*Declare the active agents */
  int num1=0, num2=0, num3=0, num4=0, op = 1 || 2 ;
这里您将num3和num4都设置为零,因为num1+num2是0+0,num1*num2是0*0。您希望在扫描后将其向下移动

  /* Information Extraction Method */
  printf("YO MOFO!!!Press a number or hit the dirt!!\n");
  scanf("%d", &num1);
  printf("Since you didn't hit the dirt, how about another number?\n");
  scanf("%d", &num2);

  /* Menu (AKA Input */
  printf("If you want to add, press 1 ,\nIf you want to multiply, press 2 ... \n\n ");
  scanf ("%d", &op);
这些printf和scanf很好,干得好

  /* PROCESS */
  if (op = 1) {num3;};
  if (op = 2) {num4;};
这里有三件事。首先,op=1将1赋值给op。与op=2相同。您希望op==1和op==2,如下所示。这样做的结果是,在这些if语句之后,op始终是2

第二件事是,虽然是有效的语句,num3;本身不会做任何事情

最后,虽然它不会伤害任何东西,但在结束大括号后不需要分号

  /* OutPut */
  if (op == 1) {
    printf("Alone, a toothpick is weak, but as part of a sum, your answer is:\n%d"), &num3;
  };

  if (op == 2) {
    printf("Multiplied as a sum of it's parts, your answer is:\n%d"), &num4;
  };
在这里,您打印出的是num3和num4的地址,而不是它们的值。这是您看到大量数字没有意义的部分原因,这是内存中num3和num4的地址。只有scanf需要与符号(&),printf不需要。而且,就目前情况而言,这些数字的实际值将是