scanf("%d",a);
とやってもコンパイルは通ります。しかし,実行するとエラーが発生します。
このように、&を付け忘れたとき、どのようなことが起こっているのでしょうか。
最初、aをアドレスと認識し、そこに値を入れようとしたが、そのアドレスは有効なものではないためエラーが発生する・・・みたいな感じなのでしょうか。
よく分からないので、教えてください。
scanfについて
-
たかぎ
Re:scanfについて
処理系も分からなければ、aの型も値も分かりません。これでは正確な回答は不可能です。
> 実行するとエラーが発生します。
どんなエラーが発生するのでしょうか?
> 実行するとエラーが発生します。
どんなエラーが発生するのでしょうか?
-
asdf
Re:scanfについて
すみません。いろいろと書き忘れていました。
例えば、このようなプログラムだと,強制終了されてしまいます。
環境は、Windows7(32ビット)Borland C++ Compiler です。
例えば、このようなプログラムだと,強制終了されてしまいます。
int main(void) {
int a = 0;
scanf("%d",a);
return 0;
}
処理系は・・・具体的には何をかけばよいのでしょうか?環境は、Windows7(32ビット)Borland C++ Compiler です。
-
たかぎ
Re:scanfについて
これだと、
scanf("%d", NULL);
としたのと同じになります。
結果として、*(int*)NULLに代入しようとして異常終了してしまいます。
scanf("%d", NULL);
としたのと同じになります。
結果として、*(int*)NULLに代入しようとして異常終了してしまいます。
-
asdf
Re:scanfについて
なぜ、scanf("%d", NULL);としたのと同じになるのでしょうか。
また、
76
19014100
となりました。
この19014100とは何なのでしょうか。
また、
#include <stdio.h>
int main(void) {
int b;
scanf("%d",b);
printf("%d", b);
return 0;
}
としたら、実行結果は、76
19014100
となりました。
この19014100とは何なのでしょうか。