Moz的C++教學
第二章常數變數與資料型態
2-1程式結構
一般而言一個複雜的C++程式多由許多不同的檔案的小模組組合而成,而一個小型的C++程式則可存於一個單一檔案中,在一個簡單的C++小程式中我們通常分為7個部分:1.程式註解區 2.前置處理區 3.公用變數區 4.程式起始區 5.區域變數區
6.程式敘述區 7.程式結束區等以上七項。
//檔案名稱2-1練習
#include<iostream>
using namespace std;
int a=100;
int main(void)
{
int b=200;
int c=300;
cout<<a<<endl<<b<<endl<<c<<endl;
system("pause");
return 0;
}
1.程式註解區
用於需要說明程式的地方,可用於任何地方並且不影響編譯執行結果,C++中常以雙斜線//作單行註解,/* */範圍內文字做區域註解。
2.前置處理區
提供如#include載入程式所需的標頭檔,標頭檔為程式所需呼叫的函數庫,所以需要放置在程式最前端。
3.公用變數區
包含程式所需用的變數,所以通常放置於所有函數之前,以提供程式中所以函數敘述使用。
4.程式起始區
程式起始區中包含main函數及其函數起始符號,main是C或C++程式之必要函數,執行程式時系統會呼叫main函數。
5.區域變數區
通常置於該函數最前端,以提供所以函數最為敘述使用。
6.程式敘述區
會包含在main之中或main中的函數之中。
7.程式結束區
在程式結束區當中包含了system及return的指令,system("pause");是使系統暫停執行直到按任意鍵結束,return 0;是回傳成功執行代碼給系統。
C++常用符號表
程式註解區
前置處理區
公用變數區
程式起始區
區 域 變 數 區
程 式 敘 述 區
程式結束區
2-2註解
C++中註解有2種,雙斜線的單行註解//及斜線加星號的範圍內註解/*註解*/,註解是為了輔助程式說明,雖然在程式中但編譯時並不會編譯執行。
範例:
//檔案名稱:註解練習
/*範圍內為註解*/
2-3插入標頭檔
插入標頭檔可分為兩種
#include<檔名>
#include”檔名“
#include是將標頭檔插入到程式內,因C++核心語言並不包含某些函數,必須自行插入,例如:cout還有cin本身並不包含在C++核心函數內,必須插入iostream標頭檔才可使用。
例如:#include<iostream>
#include是前置處理指令,前置處理就是在程式編譯前,將程式中所需要的函數或類別插入到#include之後,這樣程式語言才能編譯成功。
例如:#include<iostream> //插入iostream標頭檔
using namespace std; //宣告使用標準函數庫
int main(void)
{
int a=100;
cout<<a<<endl;
system("pause");
return 0;
}
各式標頭檔及其說明
2-4輸出函數cout
cout是螢幕輸出函數,<<為串列輸出運算符號也就是將指定變數中的資料或字串常數資料依序向輸出設備移出,最常見且最基本的就是輸出到螢幕上。輸出時可利用endl或\n來控制跳行或是利用下面圖表的特殊符號輸出特殊字元或控制碼。
字元值
字元格式
字元功能
0
\0
空格
7
\a
電腦警示音
8
\b
倒退
9
\t
移動到下一個定位點
10
\n
插入新的一行
12
\f
跳至下一頁起點
13
\r
跳至同一行起點
34
\"
插入雙引號
39
\'
插入單引號
92
\\
插入反斜線
cout應用範例:
範例1
#include<iostream>
using namespace std;
int main(void)
{
cout<<"Hello World!";
system("pause");
return 0;
}
程式輸出結果:
Hello World!請按任意鍵繼續. . .
範例2
#include<iostream>
using namespace std;
int main(void)
{
cout<<"Hello World!"<<endl; //加上endl做換行動作
cout<<"C++程式"<<endl;
system("pause");
return 0;
}
程式輸出結果:
Hello World!
C++程式
請按任意鍵繼續. . .
範例3
#include<iostream>
using namespace std;
int main(void)
{
cout<<"Hello World!"<<endl //一個cout後面為加上分號,cout未結束
<<"C++程式"<<endl;
system("pause");
return 0;
}
程式輸出結果:
Hello World!
C++程式
請按任意鍵繼續. . .
範例4
#include<iostream>
using namespace std;
int main(void)
{
cout<<"Hello Wor!\n" //加上\n可得到跟endl相同結果
<<"C++程式"\n;
system("pause");
return 0;
}
程式輸出結果:
Hello World!
C++程式
請按任意鍵繼續. . .
2-5變數及常數
1.變數:是電腦記憶體中的一個儲存位置。
2.常數:程式執行中是不可改變的資料項目。
3.宣告變數:指的是告訴編譯器在電腦的記憶體中配置一個指定資料型態的記憶空間,在程式執行中則以此指定變數來存取該記憶空間。
4.變數名稱:a-z,A-Z,0-9與底線符號的組合(_),且必須以英文字開頭。
例如:int a; 用整數型態宣告a
5.指定資料:等號(=)用來起始與指定變數值,當變數宣告後可使用等號給予該變數初始值,不過初始值必須符合宣告型態。
例如:int a=100; 宣告a初始值為100
範例:
#include<iostream>
using namespace std;
int main(void)
{
int a=100; //宣告a=100
cout<<"a初始值:"<<a<<endl; //印出a,此時a值會等於100
a=200; //變更值到200
cout<<"a變更值:"<<a<<endl; //印出a,此時a值會等於200
system("pause");
return 0;
}
程式輸出結果:
a初始值:100
a變更值:200
請按任意鍵繼續. . .
6.宣告常數
const是用於保護程序的健壯性,減少程序隱患,通常在定義變量或是在函數用使用,const的用法比較複雜,在函數中使用const,情況與定義變量的情況大致相同。
範例:
#include<iostream>
#include<cmath>
using namespace std;
const float pi=3.14f; //宣告浮點常數pi
int main(void)
{
float a,c,r;
r=5;
a=pi*float(pow(r,2));
c=2*pi*r;
cout<<"圓面積:"<<a<<endl
<<"圓周長:"<<c<<endl;
system("pause");
return 0;
}
程式輸出結果:
圓面積:78.5
圓周長:31.4
請按任意鍵繼續. . .
7.宣告符號
簡單的define定義:#defina a 1000,一個簡單的a就定義好了,它代表1000,如果在程序裡面寫 : int b=a;編譯器在處理這個代碼之前會對a進行處理替換為1000。這樣的定義看起來類似於普通的常量定義const,但也有著不同,因為define的定義更像是簡單的文本替換,而不是作為一個量來使用。
範例:
#include<iostream>
#include<cmath>
using namespace std;
#define pi 3.14f; //宣告符號pi=3.14
int main(void)
{
float a,c,r;
r=5;
a=pi*float(pow(r,2));
c=2*pi*r;
cout<<"圓面積:"<<a<<endl
<<"圓周長:"<<c<<endl;
system("pause");
return 0;
}
2-6C++的資料型態
C++普遍的資料型態有int,char,float及bool,其中int又分為short,int及long,float也分為float,double及long double。
1.整數型態int
整數又可分為有號數或無號數,以大小可分為短整數、整數及長整數,如下表。
int宣告練習
範例:
#include<iostream>
using namespace std;
int main(void)
{
short a=-32768; //宣告短整數最小值
unsigned short b=65535; //宣告無號短整數最大值
signed short c=32767; //宣告有號短整數最大值
int d=-2147483648; //宣告整數最小值
unsigned int e=4294967295; //宣告無號整數最大值
signed int f=2147483647; //宣告有號整數最小值
long g=-2147483648; //宣告長整數最小值
unsigned long h=4294967295; //宣告無號長整數最大值
signed long i=2147483647; //宣告有號長整數最小值
cout<<a<<endl
<<b<<endl
<<c<<endl
<<d<<endl
<<e<<endl
<<f<<endl
<<g<<endl
<<h<<endl
<<i<<endl;
system("pause");
return 0;
}
程式輸出結果:
-32768 65535
32767
-2147483648
4294967295
2147483647
-2147483648
4294967295
2147483647
請按任意鍵繼續. . .
2.字元資料char
char是字元與字串變數的資料型態,可指定儲存空間。
char的字元變數型態、功能與長度
C++中char會先將自元或字串資料先轉換成ASCII碼再存入記憶體。
char宣告練習
範例:
#include<iostream>
using namespace std;
int main(void)
{
char a='h'; //宣告字元h
char b=104; //宣告ACII字元
char c=0x68; //宣告16進位字元
char d[4]="C++"; //宣告4位元字串
char e[]="C&C++"; //宣告自動配置大小字串
char f='\t'; //宣告換行
cout<<a<<endl
<<b<<endl
<<c<<endl
<<d<<endl
<<e<<endl
<<f<<endl;
system("pause");
return 0;
}
程式輸出結果:
h
h
h
C++
C&C++
請按任意鍵繼續. . .
3.浮點資料float & double
浮點資料可分為單精度、倍精度與長倍精度,各類浮點數長度入值範圍等如下表。
浮點數宣告範例
範例:
#include<iostream>
#include<cfloat>
using namespace std;
int main(void)
{
float a=1.234567; //宣告a=1.234567
double b=1.2e+20; //宣告b=1.2*10的20次
long double c=1.2e+50; //宣告b=1.2*10的50次
cout<<a<<endl
<<b<<endl
<<c<<endl;
system("pause");
return 0;
}
程式輸出結果:
1.23457
1.2e+20
1.2e+50
請按任意鍵繼續. . .
4.邏輯資料bool
邏輯資料是用來表示運算式的真或是假,1代表真0代表假。
範例:
#include<iostream>
#include<cfloat>
using namespace std;
int main(void)
{
bool a=true; //宣告a為真
bool b=false; //宣告b為假
cout<<a<<endl;
cout<<b<<endl;
system("pause");
return 0;
}
程式輸出結果:
1
0
請按任意鍵繼續. . .
4.取得資料大小sizeof
sizeof可取得資料型態的大小。
範例:
#include<iostream>
#include<cfloat>
using namespace std;
int main(void)
{
short a; //宣告a為short
int b; //宣告b為int
char c; //宣告c為char
char d[6]; //宣告d為char[6]
float e; //宣告e為float
double f; //宣告f為double
bool g; //宣告g為bool
cout<<"short:"<<sizeof(a)<<endl; //取得宣告a的資料大小
cout<<"int:"<<sizeof(b)<<endl; //取得宣告b的資料大小
cout<<"char:"<<sizeof(c)<<endl; //取得宣告c的資料大小
cout<<"char[6]:"<<sizeof(d)<<endl; //取得宣告d的資料大小
cout<<"float:"<<sizeof(e)<<endl; //取得宣告e的資料大小
cout<<"double:"<<sizeof(f)<<endl; //取得宣告f的資料大小
cout<<"bool:"<<sizeof(g)<<endl; //取得宣告g的資料大小
system("pause");
return 0;
}