sizeof演算子


見た目は演算子のように見えませんが sizeof演算子(sizeof operator)というものがあります。これには、2つの書き方ああります。
これらによって、式や型のサイズ(バイト)を調べることができます。勿論式に括弧をつけます。

注意:sizeof演算子の返す型は、コンパイラによって int 型であったり、unsigned int 型であったりとまちまちです。そこで、sizeof 演算子の返す型はsize_t型と決められました。

ソースコード

源文件
  1|/* sizeof01.c */                                                            
  2|
  3|#include <stdio.h>
  4|
  5|int main(void)
  6|{
  7|  char c = 'A';
  8|  short s = 50;
  9|  int i = -100;
 10|  unsigned int ui = 128;
 11|  float f = 0.5f;
 12|  double d = 2568.2;
 13|  long double ld = 1.258E-25;
 14|
 15|  size_t sz;
 16|
 17|  sz = sizeof c;
 18|  printf("size of char = %dバイト\n",(int)sz);
 19|
 20|  sz = sizeof s;
 21|  printf("size of short = %dバイト\n",(int)sz);
 22|[
 23|  sz = sizeof i;                                                            
 24|  printf("size of int = %luバイト\n", sz);
 25|
 26|  sz = sizeof ui;
 27|  printf("size of unsigned int = %luバイト\n", sz);
 28|
 29|  sz = sizeof f;
 30|  printf("size of float = %luバイト\n", sz);
 31|
 32|  sz = sizeof d;
 33|  printf("size of double = %luバイト\n", sz);
 34|
 35|  sz = sizeof ld;
 36|  printf("size of long double = %luバイト\n", sz);
 37|
 38|  sz = sizeof(size_t);
 39|  printf("size of size_t = %luバイト\n", sz);
 40|
 41|  return 0;                                                                 
 42|}

実行結果

size of char = 1バイト
size of short = 2バイト
size of int = 4バイト
size of unsigned int = 4バイト
size of float = 4バイト
size of double = 8バイト
size of long double = 16バイト
size of size_t = 8バイト


ソースコード

源文件
  1|/* sizeof02.c */
  2|
  3|#include <stdio.h>
  4|
  5|int main(void)
  6|{
  7|  int a = 10;
  8|  size_t s;
  9|
 10|  s = sizeof ++a;
 11|
 12|  printf("a = %d\n", a);                                                    
 13|
 14|  return 0;
 15|}

実行結果

a = 10

あら、不思議!なぜa = 10 なのでしょうか。実は sizeof 式;としても式は評価されないのです。したがって上のプログラムで「sizeof ++a;」としても「++a」が評価されないので、aの値は10のままなのです。


Chapter3 @ C言語目録 @ HomeWork List @ 昭亮's Homepage