1.C语言的格式
l 什麼是C語言?
l C語言執行過程?
原始程式 --> 經由編譯器 --> 變成目的檔 --> 經由連結器 --> 變成執行檔
SOURCE.C --> COMPILER --> SOURCE.OBJ --> LINKER --> SOURCE.EXE
l C 語 言 的 特 性
( 1 ) 可 以 像 組 合 語 言 一 樣 進 行 硬 體 之 直 接 存 取 .
( 2 ) 為 語 法 規 則 簡 單 , 清 楚 , 容 易 使 用 之 結 構 化 語 言 .
( 3 ) 必 要 時 可 以 與 組 合 語 言 連 結 .
( 4 ) 可 攜 性 ( Portability ) 極 佳 , 跨 平 台 的 能 力 強 .
l 標 準 C 語 言 格 式
#include < stdio.h > ----> 前置處理器
main( ) ----> 主程式
{
int i=0 ; /* 變 數 宣 告 */
i=i+1; /* 算 數 運 算 */----> 程式主體
printf("i=%d\n",i) ; /* 輸 出 至 螢 幕 */
}
subroutine( ) ----> 副程式
..
..
subroutine( ) ----> 副程式
..
..
2.
l 變 數 命 名 的 原 則 ?
1. 開 頭 必 須 是 字 母 ( letter ) 或 底 線 ( underscore ) .
2. 字 元 的 大 寫 小 寫 所 代 表 的 意 義 不 同 .
3. 不 得 使 用 關 鍵 字 ( keyword ) . (在 Borland C++ 軟體中已粗體顯現)
l 變 數 的 資 料 型 態 種 類 :
類 別
符號位元
位元長(bits)
表 示 法
數 值 範 圍
整 數
有
16
int(short)
-32768->32767
32
long
-2147483648->2147483647
無
16
unsigned int
0->65535
16
unsigned short
0->65535
32
unsigned long
0->4294967295
浮點數
有
32
float
10^-38->10^38
64
double
10^-308-->10^308
字元
無
8
char
0->255
l
l 變 數 的 宣 告 方 法 :
( 1 ) 整 數 部 份 :
int a;
int b,c=45;
short int name;
long int var_name;
unsigned int argu1=30;
( 2 ) 浮 點 數 部 份 :
float a=12.3456; /*單精準度*/
float b=0.12345e2;
double score=4.987654322e-7; /*雙精準度*/
( 3 ) 字 元 部 份 :
char c='c';
char bell=7; /*7為ASCII之響聲字元*/
3.l 自 動 變 數 ( auto variable )
l 自 動 變 數 只 在 它 所 定 義 的 區 塊 內 有 效 。 只 要 在 變 數 所 屬 的 區 塊 結 構 內 執 行 , 該 變 數 的 資 料 是 有 效 而 正 確 的 。 當 程 式 執 行 離 開 了 該 區 塊 , 所 有 於 區 塊 內 定 義 的 自 動 變 數 就 不 存 在 了 。
l Example 1:
l main( )
{
int x=1;
inner( );
printf("%d\n",x);
} l inner( )
{
int x=2;
printf("%d\n",x);
}
l 靜 態 變 數 ( static variable)
靜 態 變 數 與 自 動 變 數 一 樣 , 是 某 特 定 函 數 內 的 區 域 性 變 數 , 但靜 態 變 數 的 值 不 會 因 函 數 的執 行 結 束 而 消 失 。
靜 態 變 數 的 宣 告 如 下 所 示 :
{
static int a;
static int b=12345;
static char c;
static float d=13.45;
.
.
.
}
Example 1:
main()
{
increment();
increment();
increment();
}
increment()
{
int x=0;
x=x+1;
printf("%d\n",x);
}
Result = ?????
Example 2:
main()
{
increment();
increment();
increment();
}
increment()
{
static int x=0;
x=x+1;
printf("%d\n",x);
}
Result = ?????
l 外 部 變 數 ( extern variable)
外部 變 數 和 前 面 所 提 到 的 變 數 不 同 。 外 部 變 數 的 有 效 範 圍 不 是 區 域 性 , 而 是 整 體 性 ( global ) , 外 部 變 數 定 義 在 任 何 函 數 的 外 面 , 表 示 可 以 被 其 他 函 數 所 共 用 。
Example 1:
int x=123;
main()
{
printf("%d\n",x);
}
Result = ?????
Example 2:
int x=123;
main()
{
int x=321;
printf("%d\n",x);
}
Result = ?????
Example 3:
#include < stdio.h >
#include "extern.c"
int x=123;
main()
{
printf("%d\n",x);
run1();
run2();
}
run1()
{
printf("%d\n",x);
}
extern.c 內 容 如 下 :
#include < stdio.h >
run2()
{
extern int x;
printf("%d\n",x);
}
Result = ?????
/* ======================================== */
/* 程式實例: */
/* 局部(local)和整體(Global) 變數 */
/* ======================================== */
#include <stdio.h>
int step = 10; /* 整體變數宣告 */
int count = 5; /* 整體變數宣告 */
/* ---------------------------------------- */
/* 將變數值加一 */
/* ---------------------------------------- */
void increment()
{
int step = 0; /* 局部變數 step 宣告 */
step++; /* 局部變數加一 */
count++; /* 整體變數加一 */
printf(" 副程序 %2d %2d \n",step, count);
}
/* ---------------------------------------- */
/* 主程式 */
/* ---------------------------------------- */
void main()
{
int count = 0; /* 局部變數宣告 */
count++; /* 局部變數加一 */
step++; /* 整體變數加一 */
printf(" 程序名 STEP COUNT \n");
increment(); /* 副程序呼叫 */
printf(" 主程序 %2d %2d \n",step, count);
}/* ======================================== */
執行結果
程序名
STEP
COUNT
副程序
1
6
主程序
11
1