2016-12-16 172 views
0

我是C语言的绝对初学者,我在codeblocks中编写了这个代码并构建它,它没有错误。该程序是,我们输入两个整数,并显示,总结,减法,乘法和no1和no2的划分。为什么运行这段代码时cmd会崩溃?

下面的代码:

#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然后程序崩溃我的输入值,并给出了消息窗口将调查问题。

+0

谢谢你,这就是问题所在。所以代码块不会显示为一个错误吧? – 2016-12-16 10:54:48

+0

我们不能将问题迁移到stackOverflow吗? “ – linuxunil

+5

”......它没有错误。“但它确实有警告,如果它们已打开,它们会提醒您这个问题。始终,总是在开启所有警告的情况下进行编译,并将产生它们的代码视为不完整或不正确。 – Blrfl

回答

4

仔细查看了这个片段:scanf("%d", no2);

+1

谢谢,是的,“&”不见了:) – 2016-12-16 10:55:45

+0

使用一种没有类型安全的语言的乐趣... – CodesInChaos

+0

公平起见,如果您启用所有警告与'-Wall'(并且通常你应该) – Timidger

1

说你声明一个名为foo的变量。

int foo; 

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

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

int *foo_ptr = &foo; 

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

正如我所说的,foo占据了一些记忆。它在内存中的位置称为它的地址。炭“&”是“地址的”运算符。

这个操作符返回一个变量的地址。在我们的例子中富,从而foo_ptr现在指向foo的变量的地址内存。

思考foo是一个大小为sizeof(int)个字节的框,这个框的位置就是它的地址,当你访问地址时,你实际上访问它指向的框的内容

boxes

1

您错过了'&'这里...

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

你忘了把 '&' 在第二scanf函数:)