回答編集履歴
1
追加
test
CHANGED
@@ -7,3 +7,79 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
8進数や16進数表記の場合には、int、unsigned int、long、unsigned long、long long、unsigned long longと、unsignedを含めて自動的に拡大されるようです。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
なので、`0x8000`と書いた場合、一般的な環境では、`int`(32bit)の範囲内に収まるので、intになります。
|
14
|
+
|
15
|
+
16bitのintが標準である16bit環境のC言語の場合には、上の法則に合わせて`unsigned int`(16bit)になるかと思われます。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
標準的なintよりも小さなサイズの数値は全てintとなり、自動的に、shortやcharになることはありません。
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
ちょっとした実験。
|
24
|
+
|
25
|
+
```C
|
26
|
+
|
27
|
+
#include <stdio.h>
|
28
|
+
|
29
|
+
int main(void){
|
30
|
+
|
31
|
+
printf("int :%lu\n",sizeof(int));
|
32
|
+
|
33
|
+
printf("long :%lu\n",sizeof(long));
|
34
|
+
|
35
|
+
printf("long long :%lu\n",sizeof(long long));
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
printf("1 :%lu\n",sizeof(1));
|
40
|
+
|
41
|
+
printf("1K :%lu\n",sizeof(1000));
|
42
|
+
|
43
|
+
printf("1M :%lu\n",sizeof(1000000));
|
44
|
+
|
45
|
+
printf("1G :%lu\n",sizeof(1000000000));
|
46
|
+
|
47
|
+
printf("1T :%lu\n",sizeof(1000000000000));
|
48
|
+
|
49
|
+
printf("1P :%lu\n",sizeof(1000000000000000));
|
50
|
+
|
51
|
+
printf("1E :%lu\n",sizeof(1000000000000000000));
|
52
|
+
|
53
|
+
// printf("100E :%lu\n",sizeof(100000000000000000000)); エラー
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
}
|
58
|
+
|
59
|
+
```
|
60
|
+
|
61
|
+
型のサイズは環境によって変わります。
|
62
|
+
|
63
|
+
```output
|
64
|
+
|
65
|
+
int :4
|
66
|
+
|
67
|
+
long :8
|
68
|
+
|
69
|
+
long long :8
|
70
|
+
|
71
|
+
1 :4
|
72
|
+
|
73
|
+
1K :4
|
74
|
+
|
75
|
+
1M :4
|
76
|
+
|
77
|
+
1G :4
|
78
|
+
|
79
|
+
1T :8
|
80
|
+
|
81
|
+
1P :8
|
82
|
+
|
83
|
+
1E :8
|
84
|
+
|
85
|
+
```
|