sizeof演算子 - C言語
sizeof演算子を使うことで配列の全体のバイト数を知ることができる。
charの配列(string)の場合、文字列のバイト数を知ることができる
sizeof
の結果を一旦、int型の変数に入れないとprintfでは出力できなかった。
問題のソース
// sizeof_test.c #include <stdio.h> int main(void){ char str1[] = "Hello!\n"; printf("%d\n", sizeof str1); }
コンパイルすると、以下のエラーが出た
sizeof_test.c:6:20: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat] printf("%d\n", sizeof str1); ~~ ^~~~~~~~~~~ %lu 1 warning generated.
sizeof演算子の戻り値はunsigned long
型なのかな?
unsigned long型とは、こちらのサイトによると、符号なしのlongってことらしい。unsignedが符号なしってこと。
解決後のソース
// sizeof_test.c #include <stdio.h> int main(int argc, char *argv[]){ char str1[] = "Hello!\n"; int size = sizeof str1; printf("%d\n", size); }
実行結果
8
また、←は間違いでした。C言語の文字列について全然理解できていなかったため、勘違いしてしまった。文字列については別の記事で書く。\n
は2バイトでした。
charの配列だと、最後の要素に'\0'(ヌル文字)
が必ず入るらしい!!ってことだけ書いておく。