#include <stdio.h>
#include <stdlib.h>
void main() {
	
    /* some comments */
	printf("Hello World!");
	
	system("PAUSE");
	return 0;
}
我們一步一步拆開來看看
#include <stdio.h>
#include <stdlib.h>
這是在 C program 編譯之前要處理的內容,我們稱為預處理命令(preprocessing command)。預處理命令還有很多,它們也都以 # 開頭,並且不用分號結尾。
而 stdio 是 standard input output 的縮寫,也就是有關輸入輸出的標頭檔(head file)stdlib 也就是 standard library,包含了 C 與 C++ 裡最常用的一些函數。
void main()
main function,從這裡開始執行 C program。
/* some comments */
註解,C program 不會編譯執行裡面的任何內容。單行註解的話使用雙斜線 //
printf("Hello World!");
printf 指令可以輸出內容顯示在螢幕上。
system(“PAUSE”);
return 0;
程式暫停,按任意鍵繼續。
| Types | Data Types | 
|---|---|
| Basic data types | int, char, float, double | 
| Enumeration data type | enum | 
| Derived data type | pointer, array, structure, union | 
| Void data type | void | 
列舉 (
enum或enumeration) 是另一種複合型別,主要是用在宣告僅有少數值的型別,像是一星期內的日期 (day of week) 或是一年內的月份等。
int 是用來宣告整數資料型態。
| Keyword | Byte | Format String | Comment | 
|---|---|---|---|
| float | 4 bytes | %f | 
浮點數 | 
| double | 8 bytes | %lf、%l | 
雙精度浮點數 | 
%c 用來宣告字元資料型態。
Variable is a named location in a memory where a program can manipulate the data. This location is used to hold the value of the variable.


變數宣告需要在變數「初次」使用前完成,不可在其被使用後才進行宣告。
至於宣告的位置並沒有特別規定,可以在任何地方進行宣告。
不過還是習慣於最一開始的時候先進行宣告。

printf & scanfprintf, scanf)是 C語言非常重要的函式,也是 C語言必學的兩個函式。在 C語言的程式中,幾乎每一個程式都會使用到這兩個函式,尤其是輸出函式。printf 或者是 scanf,那麼在撰寫時就需要引用標頭檔(head file)stdio.h。stdio 為 standard input output 的縮寫,而這兩個函式就包含在這個標頭檔裡。printf 的功能很強大,用法靈活,比較難掌握;而 scanf 用法相對比較固定。printfprintf,print format 的縮寫。Syntax:
# include <stdio.h>
int printf (const char *format, ...);
標準語法如上。
以下舉幾個例子來示範 printf 的使用方法。
printf("字符串\n");# include <stdio.h>
int main(void)
{
    printf("Hello World!\n");
    return 0;
}
\n 表示換行的意思,是一個跳脫字元。n 為 new line 的縮寫。printf 裡必須使用雙引號("),雙引號內的字幅串可以是英文,也可以是中文。printf("輸出控制符",輸出參數);# include <stdio.h>
int main(void)
{
    int i = 10;
    printf("%d\n", i);  
    return 0;
}
i 以十進制的方式輸出。i 本身就是十進制,又為甚麼還要將 i 以十進制輸出?因為程式碼中,雖然寫的是 i=10,但是在記憶體中並不是將「10」這個十進制的值存進去,而是以二進制的方式存進去。所以我們在輸出的時候就必須要有「輸出控制符」(或稱格式指定字,format specifier)來告訴系統應該怎麼解讀這個二進制的數值。

scanfscanf,scan format 的縮寫。scanf 與 printf 的用法幾乎完全一樣。但是需要注意以下兩點:
\n
& ,不過字元或陣列不需要加上& (至於為甚麼,等之後上到指標的時候會再解釋)。以下也示範幾個例子說明 scanf 的使用方法。
#include <stdio.h> 
int main() { 
	int a = 0, b = 0, c = 0, d = 0; 
	scanf("%d", &a); 
	scanf("%d", &b);
	printf("a+b = %d\n", a+b); 
	scanf("%d %d", &c, &d); 
	printf("c*d = %d", c*d); 
	
	return 0; 
}

從鍵盤上輸入 12,按下 Enter 鍵之後,scanf() 就會讀取輸入數據並給定給變數 a,本次輸入結束。接著執行下一個 scanf(),再從鍵盤輸入 60,按下 Enter 鍵就會將 60 給定給變數 b。
後面的 scanf() 有兩個用空格分開的 %d,後面跟著兩個變數 c、d,這個代表我們要一次輸入兩個整數,並且會分別給定給 c 和 d。注意,%d %d 之間是有空格的,所以我們在輸入數據時也要有空格。對於 scanf(),輸入數據的格式要和控制字符串的格式一樣。
scanf(“%d %d”, &a, &b); // 獲取使用者輸入的兩個整數,分別給定變數a和b
printf(“%d %d”, a, b); // 將變數a和b的值在螢幕上輸出
scanf 和 printf 非常相似,只是功能相反。
兩者都有格式控制字符串,都有變數,不同的是 scanf 的變數前需要加一個 & 符號。
而 &稱為取址符號,也就是可以獲得變數在記憶體的位址。(詳細內容會在指標單元詳細介紹)
#include <stdio.h>
int main() {
	int a, b, c; 
	scanf("%d %d", &a, &b); 
	printf("a+b=%d\n", a+b); 
	scanf("%d %d", &a, &b); 
	printf("a+b=%d\n", a+b); 
	scanf("%d, %d, %d", &a, &b, &c); 
	printf("a+b+c=%d\n", a+b+c);
	scanf("%d is bigger than %d", &a, &b); 
	printf("a-b=%d\n", a-b); 
	return 0; 
}

使用者每次按下 Enter 鍵,程式就會認為完成了一次輸入操作,scanf() 開始讀取使用者的輸入內容,並且根據格式控制符中提取有效的數據,只要使用者輸入的內容和格式控制符匹配,就能夠正確提取。
scanf 連續輸入我們將前兩個程式碼改寫看看!
scanf() 讀取完後並沒有拋棄多餘的值,而是將它們保存在某個地方,下次接著使用。
scanf() 把前面兩個整數給讀進去了,此時剩下一個整數 60。而第三個 scanf() 要求要輸入兩個整數,一個單獨的整數 60 並不能滿足其要求,所以我們還是必須輸入數值湊足兩個整數以後,第三個 scanf() 才能正確讀取。所以,從基本上我們可以發現從鍵盤輸入進去的數值並沒有直接交給
scanf(),而是放入一個「緩衝區」,直到我們按下 Enter,scanf()才會到緩衝區去讀取數值。如果緩衝區的數值符合scanf()的要求,那麼就可以讀取結束;如果不符合要求,那麼就繼續等待用戶輸入,或者乾脆讀取失敗。
以此算式為例:
| Types of Operators | Description | 
|---|---|
| Arithmetic operators | 用於執行數學計算,例如:加減乘除和取餘數。 | 
| Assignment operators | 用在為變數分配值(value)。 | 
| Relational operators | 用來比較兩個變數的值。 | 
| Logical operators | 對給定的變數執行邏輯運算。 | 
| Bit wise operators | 對於給定的兩個變數執行 bit operations。 | 
| Conditional (ternary) operators | 如果條件為 true,則條件運算子會回傳一個值;如果是 false,則回傳另一個。 | 
| Increment / decrement operators | 用於將變數的值增加或減少一。 | 
| Special operators | &、*、sizeof() 和 ternary operators。 | 

++ 遞增運算子與 -- 遞減運算子



| 順序 | 運算子 | 
|---|---|
| 1 | () 小括號 | 
| 2 | + 正數、- 負數 | 
| 3 | *、/、% | 
| 4 | +、- | 
| 5 | <、<=、>、>= | 
| 6 | =、!= | 
| 7 | && | 
| 8 | || | 
| 9 | = assign、*=、/=、%=、+=、-= |