回答編集履歴

2

修正

2016/11/24 09:40

投稿

hiim
hiim

スコア1689

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ```
8
8
 
9
- ポインターとunsigned intがいつも同じ大きさとは保障されないので、%pのかわりに%dや%xを使う事は良くないです。
9
+ ポインターとintがいつも同じ大きさとは保障されないので、%pのかわりに%dや%xを使う事は良くないです。
10
10
 
11
11
  私もOSXのため以下を試した結果
12
12
 
@@ -32,13 +32,11 @@
32
32
 
33
33
  データ:25 , アドレス:0x7fff5700faec
34
34
 
35
-
36
-
37
35
  ```
38
36
 
39
37
  となりアドレスの半分しか表示できませんね。。。。
40
38
 
41
-
39
+ (ポインターとシステムのintなどのサイズが異なるとアドレスの半分しか表示されない)
42
40
 
43
41
  といういう事[らしい](http://stackoverflow.com/questions/2369541/where-is-p-useful-with-printf)です
44
42
 

1

追記

2016/11/24 09:40

投稿

hiim
hiim

スコア1689

test CHANGED
@@ -41,3 +41,17 @@
41
41
 
42
42
 
43
43
  といういう事[らしい](http://stackoverflow.com/questions/2369541/where-is-p-useful-with-printf)です
44
+
45
+
46
+
47
+ ###追記
48
+
49
+ 64bitでのアドレス空間のユーザー空間は
50
+
51
+
52
+
53
+ [0x0000000000000000~0x00007fffffffffff](http://wiki.bit-hive.com/linuxkernelmemo/pg/64bit%A4%C7%A4%CE%A5%A2%A5%C9%A5%EC%A5%B9%B6%F5%B4%D6)
54
+
55
+
56
+
57
+ という事で%pの出力はその範囲を正しく表せますが%x(%d)は表せてないですね。。。