作曲・指導・C言語・Linux

金沢音楽制作

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

どこでも変数宣言

C89では、変数宣言がブロックの先頭でしかできませんでしたが、C99ではどこでもできるようになりました。また、for文の初期化式でも宣言できるようになりました。

つぎのコードを見てください。変数がブロックの先頭ではなく、必要な時に宣言されているのが分かります。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  printf("Double the integer: ");

  const int LimitInt = 10;
  char buf[LimitInt];
  fgets(buf,LimitInt,stdin);

  int x = atoi(buf);

  printf("%d\n", x*2);

  return 0;
}

for文で使うカウンタ変数iを初期化式で宣言しています。もちろん、forブロックを抜けるとカウンタ変数iは消滅します。

#include <stdio.h>

int main(void)
{
  int total = 0;

  for (int i = 0; i <= 10; i++) {
    total += i;
  }

  printf("total: %d\n", total);

  return 0;
}

ちなみに、C89でもブロックを利用して近いことができます。なくはないと思いますが、あまり見たことがないです。

#include <stdio.h>

int main(void)
{
  int total = 0;

  {
    int i;
    for (i = 0; i <= 10; i++) {
      total += i;
    }
  }

  printf("total: %d\n", total);

  return 0;
}

更新情報