Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語における有効な宣言・初期化と無効な宣言・初期化の違いを徹底解説

はじめに:この記事で扱う問題

C言語でプログラミングを行う際、「有効な宣言・初期化」と「無効な宣言・初期化」にはどのようなものがあるのかを、具体例を挙げながら解説します。

有効・無効な記述について論じる前に、まずC言語で変数を宣言し、初期化する基本的な方法をおさらいしておきましょう。

変数宣言とは

変数宣言の基本構文は以下の通りです。

構文

Datatype v1,v2,…vn;

ここで、v1、v2、…vn はそれぞれ変数名を表します。

例えば、次のように記述します。

int sum;
float a,b;

変数の宣言方法には、主に次の2種類があります。

  • ローカル宣言

  • グローバル宣言

ローカル宣言とは、mainブロックなどの関数内部で変数を宣言することです。この場合、変数の値はそのブロック内でのみ参照できます。

グローバル宣言とは、mainブロックの外側で変数を宣言することです。この場合、変数の値はプログラム全体のどこからでも参照できます。

記述例:

int a, b; /* グローバル宣言 */
main ( ){
    int c; /* ローカル宣言 */
    - - -
}

変数の初期化とは

変数の初期化の基本構文は以下の通りです。

構文

Datatype v1=number;

記述例:

int sum=0;
float a=1,b=4.5;

データ型を用いて変数を宣言する際、宣言と同時に値を代入して初期化することができます。ただし、宣言や初期化を行う際には、C言語特有のルールに従う必要があります。

それでは、実際に有効な宣言・初期化と無効な宣言・初期化の例を見ていきましょう。

有効・無効な記述の具体例

  • char a=65;

    有効な文です。変数を定数で初期化することは許されているためです。

  • static int p=20, q=p*p;

    無効な文です。static変数は必ず定数で初期化しなければなりませんが、ここではqが定数ではなく別の変数を用いて初期化されているためです。

  • double x=30*PI;

    有効な文です。変数を定数式で初期化しているためです。

  • double diameter[]={1, PI/2, PI, 2*PI/2};

    有効な文です。配列の各要素を定数で初期化しているためです。

サンプルプログラム①:有効な宣言と初期化の場合

#include<stdio.h>
void main ( ){
    int a,b;
    a= 10, b = 20;
    printf (" %d", a<b);
    printf (" %d", a<=b);
    printf (" %d", a>b);
    printf (" %d", a>=b);
    printf (" %d", a = =b);
    printf (" %d", a ! =b);
}

出力結果

1 1 0 0 0 1

比較演算子の評価結果が正しく出力されており、宣言と初期化が適切に行われていることがわかります。

サンプルプログラム②:無効な宣言と初期化の場合

#include <stdio.h>
int main(){
    static int p=20, q=p*p;// 無効な初期化
    printf("%d%d",p,q);
    return 0;
}

出力結果

error will be occurred
error: initializer element is not constant
    static int p=20, q=p*p;

このようにコンパイルエラーが発生します。「initializer element is not constant(初期化子の要素が定数ではない)」というエラーメッセージが出るのは、static変数qを定数ではなく変数pを用いて初期化しようとしているためです。static変数を初期化する際は、必ず定数または定数式を使用しましょう。

  1. store.rg-adguard.netは安全で違法ではない?信頼性と使い方を徹底解説

    Windowsユーザーの中には、何らかの理由でMicrosoft Storeを使えず、アプリのインストールに困っている方もいるでしょう。そんなときに便利なのが「store.rg-adguard.net」です。このサイトでは、Microsoft Storeで配信されている.appxファイルや.appxbundleファイルを直接ダウンロードでき、ストアに掲載されているほぼすべてのアプリ、ゲーム、テーマにアクセスすることが可能です。たとえば、企業環境などでMicrosoftによってストアからのインストール機能が無効化されている場合でも、正規のStoreアプリへのリンクを取得してstore.rg-ad

  2. FMoviesは安全で合法?映画視聴のリスクと安心できる代替サービスを徹底解説

    FMoviesは、Netflixよりも早く登場した動画配信サイトです。Netflixのようなストリーミングサービスがまだ存在しなかった時代に登場したため、多くのユーザーが同サイトに集まりました。しかし今でも、「FMoviesは本当に安全なのか」という重要な疑問を考えずにアクセスしている人がいるかもしれません。 FMoviesで映画を見るのは確かに魅力的です。まず何より無料であること。それだけで誰もがサイトを訪れたくなるでしょう。さらに、選べる作品数も豊富です。そのため、サイトを訪れたい、さらには使い続けてしまいたくなる気持ちも理解できます。 残念ながら、そうした人の多くは自分自身の安全について