为什么运行此代码时cmd会崩溃?

时间:2016-12-16 10:46:36

标签: c

我是C的绝对初学者,我在codeblocks中编写了这段代码并构建它,它没有错误。程序是,我们输入两个整数和显示,求和,减法,乘法和no1和no2的除法。

以下是代码:

#include <stdio.h>
int main ()
{
int no1,no2,sum,sub,multi,div;

printf("Enter your first number");
scanf("%d", &no1);
printf("Enter second number");
scanf("%d", no2);

sum=(no1+no2);
sub=(no1-no2);
multi=(no1*no2);
div= (no1/no2);

printf ("%d + %d = %d \n",no1,no2,sum);
printf ("%d - %d = %d \n",no1,no2,sub);
printf ("%d * %d = %d \n",no1,no2,multi);
printf ("%d / %d = %d \n",no1,no2,div);

return 0 ;
}

我得到0个错误但是当我运行它时,cmd打开,然后我输入no1和no2的值然后程序崩溃并给出消息窗口将调查问题。

4 个答案:

答案 0 :(得分:4)

仔细查看此代码段:scanf("%d", no2);

答案 1 :(得分:1)

假设您声明了一个名为foo的变量。

int foo;

此变量占用一些内存。它占用四个字节的内存(因为int是四个字节宽)。

现在让我们声明另一个变量。

int *foo_ptr = &foo;

foo_ptr被声明为int的指针。我们已将其初始化为指向foo变量。

正如我所说,foo占据了一些记忆。它在内存中的位置称为其地址。 char'&amp;'是“地址”运营商。

此运算符返回变量的地址。在我们的例子中,foo,因此foo_ptr现在指向foo变量的地址存储器。

将每个变量视为一个框。 foo是一个sizeof(int)字节大小的框。此框的位置是其地址。当您访问该地址时,您实际上访问了它所指向的框的内容。

boxes

答案 2 :(得分:1)

你错过了'&amp;'在这......

   printf("Enter second number");
    scanf("%d", &no2);

答案 3 :(得分:1)

你忘了把&#39;&amp;&#39;在第二次扫描时:)