目次

補遺

変数の名前の付け方

大文字小文字を区別するよ。

英字で始まり英数字が続く=英数字が並ぶ文字列、ただし最初は英字。

条件分岐の中括弧

if~elseの条件分岐で文が一つだけならなら中括弧はなくてもよい。しかし思わぬ失敗をしがちなので、書いておく方がよい。

forの初期化での変数宣言

#include <stdio.h>

int main()
{
   for (int i=0; 10>i ; i=i+1 ){
      printf("こんにちは\n");
   }
   return 0;
}

これは許されていないのでエラーになる

~/c$ gcc k0501.c -o k0501
k0501.c: In function ‘main’:
k0501.c:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
k0501.c:5: note: use option -std=c99 or -std=gnu99 to compile your code

でも、オプションにより許されるとあるので

~/c$ gcc k0501.c -o k0501 -std=c99
~/c$ ./k0501 
おはよう
おはよう
おはよう
おはよう
おはよう
おはよう
おはよう
おはよう
おはよう
おはよう
    int i = 100;
    for (int i=0; 10>i; i=i+1 ){
        printf("おはよう%d\n",i);
    }
    printf ("%d\n",i);
~/c$ gcc k0501.c -o k0501 -std=c99
~/c$ ./k0501 
おはよう0
おはよう1
おはよう2
おはよう3
おはよう4
おはよう5
おはよう6
おはよう7
おはよう8
おはよう9
100
    int i = 100;
    for ( i=0; 10>i; i=i+1 ){
        printf("おはよう%d\n",i);
    }
    printf ("%d\n",i);
~/c$ gcc k0501.c -o k0501 -std=c99 (-std=c99を付けなくてもおなじ)
~/c$ ./k0501 
おはよう0
おはよう1
おはよう2
おはよう3
おはよう4
おはよう5
おはよう6
おはよう7
おはよう8
おはよう9
10
    int i = 100;
    int a = 100;
    for ( i=0; 10>i; i=i+1 ){
        int a = i;
        printf("おはよう%d %d\n",i,a);
    }
    printf ("%d %d\n",i,a);
    return 0;
~/c$ gcc k0501.c -o k0501 -std=c99 (-std=c99を付けなくてもおなじ)
~/c$ ./k0501 
おはよう0 0
おはよう1 1
おはよう2 2
おはよう3 3
おはよう4 4
おはよう5 5
おはよう6 6
おはよう7 7
おはよう8 8
おはよう9 9
10 100

配列の初期化で変数がつかえない

    int max = 3;
    float hen[max] = {12.1, 20  , 30.5};
2回同じ変数が宣言
k0509.c:7: error: redefinition of ‘max’
k0509.c:6: note: previous definition of ‘max’ was here

    int max = 3;
    float hen[max] = {12.1, 20  , 30.5};
k0509.c:7: error: variable-sized object may not be initialized

    int max = 3;
    float hen[max] ;
     hen[0]=12.1; hen[1]=20; hen[2]=30.5;
ならok

#include 
#define MAX 3
int main()
{
    float hen[MAX] = { 12.1, 20, 30.5 };
    int i;

    for ( i = 0 ; MAX>i ; i=i+1 ){
ならなおOK
聖愛中学高等学校
http://www.seiai.ed.jp/
Oct. 2011