teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

文言修正

2020/05/30 15:27

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  `%c`に対してint型変数のアドレスを渡しています。
2
- そのため、num[0]の下位1バイト(char一文字分)のみ値が格納され、上位3バイトは不定値となります。
2
+ そのため、num[0]の下位1バイト(char一文字分)のみ値が格納され、上位3バイトは(numを0クリアしていないので)不定値となります。
3
3
  scanfの後に
4
4
  `printf("num[0]:%x 'm':%x\n", num[0], 'm');`
5
5
  を追加すると確認できます。

3

不要な`\`指摘

2020/05/30 15:27

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -7,4 +7,14 @@
7
7
  ---
8
8
 
9
9
  `int num[3] = {0};`として0クリアしておけば一応動きます。
10
- ビッグエンディアンの環境ではだめでしょうけれど…
10
+ ビッグエンディアンの環境ではだめでしょうけれど…
11
+
12
+ ---
13
+
14
+ 不要な`\`がついています。
15
+ ```diff
16
+ -printf("\抜き取りました!%d",num[1]);
17
+ +printf("抜き取りました!%d",num[1]);
18
+ -printf("\数字だけ");
19
+ +printf("数字だけ");
20
+ ```

2

コード追記

2020/05/30 15:26

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -2,4 +2,9 @@
2
2
  そのため、num[0]の下位1バイト(char一文字分)のみ値が格納され、上位3バイトは不定値となります。
3
3
  scanfの後に
4
4
  `printf("num[0]:%x 'm':%x\n", num[0], 'm');`
5
- を追加すると確認できます。
5
+ を追加すると確認できます。
6
+
7
+ ---
8
+
9
+ `int num[3] = {0};`として0クリアしておけば一応動きます。
10
+ ビッグエンディアンの環境ではだめでしょうけれど…

1

1バイトの理由を追記

2020/05/30 15:24

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  `%c`に対してint型変数のアドレスを渡しています。
2
- そのため、num[0]の下位1バイトのみ値が格納され、上位3バイトは不定値となります。
2
+ そのため、num[0]の下位1バイト(char一文字分)のみ値が格納され、上位3バイトは不定値となります。
3
3
  scanfの後に
4
4
  `printf("num[0]:%x 'm':%x\n", num[0], 'm');`
5
5
  を追加すると確認できます。