作曲・指導・C言語・Linux

金沢音楽制作

金沢音楽制作では、楽曲・楽譜の制作と、作曲や写譜などレッスンを行っています。

期待できない long long int型

C99から、64bitの情報を格納できるlong long int型とunsigned long long int型が追加されました。long long intは、long longintを省略して宣言することができます。

ただし、64bit環境だとlong int型と同じバイト数になるので、あまり恩恵が受けられません。

『Cクイックリファレンス』22頁

sizeof演算子とlimits.hのマクロで、サイズと値の確認してみます。

#include <stdio.h>
#include <limits.h>

int main(void)
{
  printf("int               : %d byte\n",   sizeof(int));
  printf("long              : %ld byte\n",  sizeof(long));
  printf("long long         : %lld byte\n", sizeof(long long));
  printf("unsigned long long: %llu byte\n",
          sizeof(unsigned long long));

  putc('\n', stdout);

  printf("INT_MAX   : %d\n",   INT_MAX);
  printf("LONG_MAX  : %ld\n",  LONG_MAX);
  printf("LLONG_MAX : %lld\n", LLONG_MAX);
  printf("ULLONG_MAX: %llu\n", ULLONG_MAX);

  return 0;
}
$ ./a.out
int               : 4 byte
long              : 8 byte
long long         : 8 byte
unsigned long long: 8 byte

INT_MAX   : 2147483647
LONG_MAX  : 9223372036854775807
LLONG_MAX : 9223372036854775807
ULLONG_MAX: 18446744073709551615

実行環境が64bitだったので、long long intは、long int型と同じサイズ、値になりました。

更新情報