回答編集履歴

4

文言修正

2020/05/30 15:27

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1,6 +1,6 @@
1
1
  `%c`に対してint型変数のアドレスを渡しています。
2
2
 
3
- そのため、num[0]の下位1バイト(char一文字分)のみ値が格納され、上位3バイトは不定値となります。
3
+ そのため、num[0]の下位1バイト(char一文字分)のみ値が格納され、上位3バイトは(numを0クリアしていないので)不定値となります。
4
4
 
5
5
  scanfの後に
6
6
 

3

不要な`\`指摘

2020/05/30 15:27

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -17,3 +17,23 @@
17
17
  `int num[3] = {0};`として0クリアしておけば一応動きます。
18
18
 
19
19
  ビッグエンディアンの環境ではだめでしょうけれど…
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ 不要な`\`がついています。
28
+
29
+ ```diff
30
+
31
+ -printf("\抜き取りました!%d",num[1]);
32
+
33
+ +printf("抜き取りました!%d",num[1]);
34
+
35
+ -printf("\数字だけ");
36
+
37
+ +printf("数字だけ");
38
+
39
+ ```

2

コード追記

2020/05/30 15:26

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -7,3 +7,13 @@
7
7
  `printf("num[0]:%x 'm':%x\n", num[0], 'm');`
8
8
 
9
9
  を追加すると確認できます。
10
+
11
+
12
+
13
+ ---
14
+
15
+
16
+
17
+ `int num[3] = {0};`として0クリアしておけば一応動きます。
18
+
19
+ ビッグエンディアンの環境ではだめでしょうけれど…

1

1バイトの理由を追記

2020/05/30 15:24

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1,6 +1,6 @@
1
1
  `%c`に対してint型変数のアドレスを渡しています。
2
2
 
3
- そのため、num[0]の下位1バイトのみ値が格納され、上位3バイトは不定値となります。
3
+ そのため、num[0]の下位1バイト(char一文字分)のみ値が格納され、上位3バイトは不定値となります。
4
4
 
5
5
  scanfの後に
6
6