回答編集履歴

3

コメントに基づき一部修正

2019/12/19 01:37

投稿

rubato6809
rubato6809

スコア1380

test CHANGED
@@ -68,4 +68,4 @@
68
68
 
69
69
 
70
70
 
71
- 質問者のコードは内側の i を定義しただけで値をセットしていません。**不定値**です。値が無いのではありませんよ、値が不定なだけ。だってメモリには何かの値があるのだから。割り当てられたメモリに残っていた値が表示されたです。~~私的には不思議な表示ですが、文字化けのようなものかな。~~残っていた値は -52 = 0xCC である、これは半角カタカナの「フ」かもね、と表示したんだな。了解
71
+ 質問者のコードは内側の i を定義しただけで値をセットしていません。**不定値**です。値が無いのではありませんよ、値が不定なだけ。だってメモリには何かの値があるのだから。普通、割り当てられたメモリに残っていた値が表示されるのだけど、この場合はデバッガがセットし値だそうです、コメントをお読みください。~~私的には不思議な表示ですが、文字化けのようなものかな。残っていた値は~~ -52 = 0xCC である、これは半角カタカナの「フ」かもね、と表示したんだな。0xCC が int3(デバッグ割り込み)ということは、プログラムのバグで、ここを「実行」しちゃったらただちにデバッガに捉えられるという仕掛けなんですね

2

訂正追加

2019/12/19 01:37

投稿

rubato6809
rubato6809

スコア1380

test CHANGED
@@ -1,4 +1,4 @@
1
- はっきり言いましょう。
1
+ 良い質問です。はっきり言いましょう。
2
2
 
3
3
  int i; と char i; は、**同名「i」だけど、別の変数だから**。もちろん割り当てられるメモリも違う。
4
4
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  ```
48
48
 
49
- ほらね、アドレスが違う。コードブロックの内側で 65 を代入したのに、外側が0のままなのは、別の変数だから。
49
+ ほらね、アドレスが違う。コードブロックの内側で 'A' を代入したのに、外側が0のままなのは、別の変数だから。
50
50
 
51
51
 
52
52
 
@@ -68,4 +68,4 @@
68
68
 
69
69
 
70
70
 
71
- 質問者のコードは内側の i を定義しただけで値をセットしていません。**不定値**です。値が無いのではありませんよ、値が不定なだけ。だってメモリには何かの値があるのだから。割り当てられたメモリに残っていた値が表示されたのです。私的には不思議な表示ですが、文字化けのようなものかな。
71
+ 質問者のコードは内側の i を定義しただけで値をセットしていません。**不定値**です。値が無いのではありませんよ、値が不定なだけ。だってメモリには何かの値があるのだから。割り当てられたメモリに残っていた値が表示されたのです。~~私的には不思議な表示ですが、文字化けのようなものかな。~~残っていた値は -52 = 0xCC である、これは半角カタカナの「フ」かもね、と表示したんだな。了解。

1

語尾修正

2019/12/19 00:17

投稿

rubato6809
rubato6809

スコア1380

test CHANGED
@@ -68,4 +68,4 @@
68
68
 
69
69
 
70
70
 
71
- 質問者のコードは内側の i を定義しただけで値をセットしていません。**不定値**です。値が無いのではありませんよ、値が不定なだけ。だってメモリには何かの値があるのだから。割り当てられたメモリに残っていた値が表示されたのでしょう。私的には不思議な表示ですが、文字化けのようなものかな。
71
+ 質問者のコードは内側の i を定義しただけで値をセットしていません。**不定値**です。値が無いのではありませんよ、値が不定なだけ。だってメモリには何かの値があるのだから。割り当てられたメモリに残っていた値が表示されたので。私的には不思議な表示ですが、文字化けのようなものかな。