どこでも変数宣言
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;
}