回答編集履歴

2

修正

2020/08/21 01:18

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -14,6 +14,8 @@
14
14
 
15
15
  一続きのものとして扱われます。
16
16
 
17
+ なので、間に`'\0'`は入りません。
18
+
17
19
 
18
20
 
19
21
  ---
@@ -22,10 +24,14 @@
22
24
 
23
25
  C言語の文字リテラル、`'A'`とかは、実はint型なのです。
24
26
 
27
+ `printf("char=%d\n",sizeof(char));`
28
+
25
- `printf("char=%d\n\'A\' =%d",sizeof(char),sizeof('A'));`
29
+ `printf("\'A\' =%d\n",sizeof('A'));`
30
+
31
+ `printf("int =%d\n",sizeof(int));`
26
32
 
27
33
  を実行してみるとわかります。
28
34
 
29
- char型は1バイトなのに対して、`'A'`は4バイトあります。
35
+ char型は1バイトなのに対して、`'A'`はintと同じく4バイトあります。
30
36
 
31
37
  C言語の仕様的にそうなっているのです。

1

追加

2020/08/21 01:18

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -13,3 +13,19 @@
13
13
  自動的に`"ABCabc"`という文字列としてみなされるという機能があるので、
14
14
 
15
15
  一続きのものとして扱われます。
16
+
17
+
18
+
19
+ ---
20
+
21
+ なぜ、char型で良いのに、intなの?という点について、
22
+
23
+ C言語の文字リテラル、`'A'`とかは、実はint型なのです。
24
+
25
+ `printf("char=%d\n\'A\' =%d",sizeof(char),sizeof('A'));`
26
+
27
+ を実行してみるとわかります。
28
+
29
+ char型は1バイトなのに対して、`'A'`は4バイトあります。
30
+
31
+ C言語の仕様的にそうなっているのです。