SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

パソコン基礎知識 C 言語編 (その二) 言語構造、注釈、変数、定数、演算子

■言語構造

  ・C は複雑な開発環境である。
    単純に C のソースだけでコンパイルできるものは少ない。
    def ファイルがいるもの、プロジェクトファイルがいるものなど、使用する
    開発環境にあわせたモジュール群が必要である。
    Windows プログラミングでは、更にリソースファイルが必要となる。

/*
========================================================================
  ハロー C
========================================================================
  proj0001.c version 1.00  Copyright(C) 2001 Y.SAK
*/

// インクルードヘッダ
#include <stdio.h>

// 関数プロトタイプ宣言
int main(void);
/*
========================================================================
  メイン
========================================================================
*/
int main(void)
{
  printf("はじめての C ですのん。\n");
  printf("あいうえお。\n");
  return(0);
}

■トークン

  ・C は、大文字小文字に厳密な違いがあるので注意する。
    ほとんどの構文は小文字である。

■注釈

  /* ... */  ← 複数行など、この範囲を注釈にする
  //         ← これより、右辺を注釈にする
                但し、未サポートのコンパイラあり

■インクルードヘッダ

#include <stdio.h>
          |_ ヘッダ名

  ・stdio.h は、標準入出力のスタティックライブラリヘッダである。
    Windows プログラミングでは、windows.h となる。
    この他に様々なヘッダファイルがある。
    数学関数を使用するときには、そのヘッダをインクルードする。

  ・コンパイラは、自ソースにない関数をヘッダを参照して解決する。
    そして、実際のライブラリ参照はリンカが行う。コンパイルは解決していて
    も目的の関数がライブラリで探せなければ、リンカエラーとなる。

■関数プロトタイプ宣言

int main(void);

  ・自ソース内の関数であっても、呼ぶ前に出現していなければ、コンパイルエ
    ラーになる。ソースの記述を参照されるものほど先頭に持ってくれば解決も
    できるが、関数プロトタイプを記述しておくことで解決することもできる。

■エントリ関数

int main(void)
{
  ...
}

  ・C は全てのコードが関数である。
    OS からのエントリ関数は main() と定められている。
    Windows では、WinMain() である。

  ・関数の引数のスタックは、VB などと逆である。
    Windows の DLL は、C 以外の言語インタフェースを考慮して PASCAL 宣言
    になっている。他言語と共有するライブラリを作成するときは PASCAL 宣言
    すること。

  ・void は「なし」を現している。
    戻り値のない関数は、void test(int a, int b) のスタイルになる。

  ・return は、関数脱出関数である。戻り値を渡すことができる。

■変数タイプ

  int       整数変数(コンパイラによって大きさが違うので注意)
  float     単精度浮動小数点変数 (4 バイト)
  double    倍精度浮動小数点変数 (8 バイト)
  char      バイト変数
  char []   文字列(最後が NULL で終わる)

  unsigned  サインビットを使用しない
  short     コンパイラによっては、int の半分になる
  long      コンパイラによっては、int の倍になる

  ・unsigned short int、unsigned long int などと使用する。

■型キャスト

  C 言語は、ポインタの互換など、非常にうるさい言語である。
  コンパイラを通すため、型キャスト変換と言うのを使用する。
  次の例のように (int) など、() で型を指定する。

  SendMessage(hCmpFile, WM_COMMAND, IDM_CNDFILE, (long) str);
  SetDlgText(hDlg, IDD_POINTSTX, WPrintf("%5d", (LPSTR) BsPtSv.x));
  ys = ((long) bm.bmHeight - bm2.bmHeight - OffY) * xp + (OffX * bm.bmBitsPixel >> 3);
  adr = (long) i * xByte;

■定数

#define DATA_MAX 100
#define BYTE unsigned char

  ・定数は大文字で記述するのが仕来たりである。

■演算子

  +       加算
  -       減算
  *       掛け算
  /       割り算
  %       余り
  ++      インクリメント (+ 1)
  --      デクリメント   (- 1)
  <<      左ビットシフト
  >>      右ビットシフト

  ++i は、i が参照される前にインクリメントされる。
  i++ は、i 参照後にインクリメントされる。
  ** 小数点の演算は標準では 2 進演算のため、誤差に注意すること!!

■ビット演算子

  &       AND  論理積
  |       OR   論理和
  ^       XOR  排他論理和

■代入

  =       単純代入
  +=      加算代入
  -=      減算代入
  *=      乗算代入
  /=      除算代入

  a = a + b; は、a += b; と等しい。
  16 進数は、0x0ff と表現。

■特殊文字

  \n      改行
  \r      キャリッジリータン

  printf() などのフォーマット書式で使用可能である。

■バイト数確認

  ・使用するコンパイラの int 定義など実際に検証してみましょう。

/*
========================================================================
  バイト数確認
========================================================================
  proj0002.c version 1.00  Copyright(C) 2001 Y.SAK
*/

// インクルードヘッダ
#include <stdio.h>

// 関数プロトタイプ宣言
int main(void);
/*
========================================================================
  メイン
========================================================================
*/
int main(void)
{
  int a;
  short int b;
  long int c;
  float d;
  double e;
  char f[11];

  printf("-- バイト数確認 --\n");
  printf("int = %d バイト\n", sizeof(a));
  printf("short int = %d バイト\n", sizeof(b));
  printf("long int = %d バイト\n", sizeof(c));
  printf("float = %d バイト\n", sizeof(d));
  printf("double = %d バイト\n", sizeof(e));
  printf("char [11] = %d バイト\n", sizeof(f));

  return(0);
}

■パソコン基礎知識 C 言語編資料
■プログラミング言語資料
■パソコン基礎知識 ハード編資料
■パソコン基礎知識 画像編資料
■パソコン基礎知識 Windows 編資料
■コンピュータシステム導入編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK