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

回答編集履歴

2

修正

2020/08/21 01:18

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -6,11 +6,14 @@
6
6
  その代わり、間に何も書かずに、`"ABC" "abc"`と書いた場合は、
7
7
  自動的に`"ABCabc"`という文字列としてみなされるという機能があるので、
8
8
  一続きのものとして扱われます。
9
+ なので、間に`'\0'`は入りません。
9
10
 
10
11
  ---
11
12
  なぜ、char型で良いのに、intなの?という点について、
12
13
  C言語の文字リテラル、`'A'`とかは、実はint型なのです。
14
+ `printf("char=%d\n",sizeof(char));`
13
- `printf("char=%d\n\'A\' =%d",sizeof(char),sizeof('A'));`
15
+ `printf("\'A\' =%d\n",sizeof('A'));`
16
+ `printf("int =%d\n",sizeof(int));`
14
17
  を実行してみるとわかります。
15
- char型は1バイトなのに対して、`'A'`は4バイトあります。
18
+ char型は1バイトなのに対して、`'A'`はintと同じく4バイトあります。
16
19
  C言語の仕様的にそうなっているのです。

1

追加

2020/08/21 01:18

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -5,4 +5,12 @@
5
5
  C言語では、`""`で囲った範囲内で改行することはできません。
6
6
  その代わり、間に何も書かずに、`"ABC" "abc"`と書いた場合は、
7
7
  自動的に`"ABCabc"`という文字列としてみなされるという機能があるので、
8
- 一続きのものとして扱われます。
8
+ 一続きのものとして扱われます。
9
+
10
+ ---
11
+ なぜ、char型で良いのに、intなの?という点について、
12
+ C言語の文字リテラル、`'A'`とかは、実はint型なのです。
13
+ `printf("char=%d\n\'A\' =%d",sizeof(char),sizeof('A'));`
14
+ を実行してみるとわかります。
15
+ char型は1バイトなのに対して、`'A'`は4バイトあります。
16
+ C言語の仕様的にそうなっているのです。