2016-12-16 7 views
0

私はCの完全な初心者です。私はこのコードをcodeblocksに書いて作成しましたが、エラーはありませんでした。プログラムは、2つの整数を入力し、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が開き、その後、Iその後、NO1とNO2の入力値プログラムがクラッシュし、メッセージ・ウィンドウを与えるがになりますが、問題。

+0

が問題だったこと、ありがとうございます。だからコードブロックはエラーとして表示されませんね? –

+0

質問をstackOverflowに移行できませんか? – linuxunil

+5

"...エラーはありませんでした。"しかし、それには警告があります。警告がオンになっていれば、この問題を警告するはずです。いつも常に、常にすべての警告をオンにしてコンパイルし、コードを生成するコードを不完全または間違ったものとして扱います。 – Blrfl

答えて

4

はこのスニペットをよく見る:scanf("%d", no2);

+1

ありがとう、ええ、 "&"が見つかりませんでした:) –

+0

型の安全性を持たない言語を使用することの喜び... – CodesInChaos

+0

公正であるように、 '-Wall'ですべての警告を有効にすると警告が表示されますすべきである) – Timidger

1

は、あなたがfooという名前の変数を宣言すると言います。

int foo; 

この変数はいくらかのメモリを占有します。これは4バイトのメモリを占有します(intは4バイト幅です)。

ここで別の変数を宣言しましょう。

int *foo_ptr = &foo; 

foo_ptrはintへのポインタとして宣言されています。 foo変数を指すように初期化しました。

私が言ったように、fooはいくらかのメモリを占有しています。メモリ内のその位置をアドレスと呼びます。シャア& '「はアドレスの」オペレータである。

この演算子は、変数のアドレスを返します。我々の場合fooのでは、このようにfoo_ptr今のfoo変数のアドレスのメモリを指す。

考えますfooはsizeof(int)バイトのサイズのボックスです。このボックスの位置はアドレスです。アドレスにアクセスすると、実際に指しているボックスの内容にアクセスします。

boxes

1

ここでは「&」が見つかりませんでした。

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

あなたは第二のscanfで '&' を入れるのを忘れ:)

関連する問題