scanf("%d",a);
とやってもコンパイルは通ります。しかし,実行するとエラーが発生します。
このように、&を付け忘れたとき、どのようなことが起こっているのでしょうか。
最初、aをアドレスと認識し、そこに値を入れようとしたが、そのアドレスは有効なものではないためエラーが発生する・・・みたいな感じなのでしょうか。
よく分からないので、教えてください。
scanfについて
Re:scanfについて
処理系も分からなければ、aの型も値も分かりません。これでは正確な回答は不可能です。
> 実行するとエラーが発生します。
どんなエラーが発生するのでしょうか?
> 実行するとエラーが発生します。
どんなエラーが発生するのでしょうか?
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に代入しようとして異常終了してしまいます。
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とは何なのでしょうか。