c
1#include <stdio.h> 2 3int main(void) 4{ 5 char ary[5] = "ABCDE"; 6 printf("%lu\n", sizeof(ary)); //結果:5 7 printf("%lu\n", sizeof("ABCDE")); //結果:6 8 return 0; 9}
文字列リテラルは、文字列の最後に'\0'が入るので、上記の例だと、"ABCDE"は6バイト分の領域が必要なはずです。
そして、配列の要素数を初期化子が越えると、アウトなはずです。つまり、char ary[6] としないとダメだと思うわけです。
しかしerrorはおこりません。なぜでしょうか。
###補足
char ary[] = "ABCDE";
とすると、sizeof(ary)の値は6になりました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/06 14:54
2019/06/07 08:30