1. 程式人生 > >第一章 資料型別與表示式

第一章 資料型別與表示式

C++語言的字符集與詞彙

在這裡插入圖片描述
在這裡插入圖片描述

C++的資料包括:

常量:程式執行時其值不能改變的量(即常數)
變數:程式執行時其值可以改變的量稱為變數。
常量與變數都具有型別。

資料型別

計算機處理的物件是資料,而資料是以某種特定
的形式存在的(例如整數、浮點數、字元等形
式)

C++可以使用的資料型別如下:

在這裡插入圖片描述

常數

 定義:程式執行時其值不能改變的量(即常數)
 分類:
 符號常量:用識別符號代表常量
 定義格式: #define 符號常量 常量
 一般用大寫字母
 直接常量:
 整型常量
 實型常量
 字元常量
 字串常量

整型常量(整常數)

三種形式:

十進位制整數:

由數字0~9和正負號表示. 如 123,-456,0

八進位制整數:

由數字0開頭,後跟數字0~7表示. 如0123,011

十六進位制整數:

由0x開頭,後跟09,af,A~F表示. 如0x123,0Xff

整型常量的型別

 根據其值所在範圍確定其資料型別
 在整常量後加字母l或L,認為它是long int 型常量

實型常量(實數或浮點數)

表示形式:

十進位制數形式:

由整數部分和小數部分組成,必須有小數點) 如0.123, .123, 123.0, 0.0, 123.
( 可以省略其中之一,如78.或.06,.0,但不能二者皆省略。)

指數形式:

 其一般形式為 尾數 e或E 指數
 用e或E代替指數10
 e或E之前後必須有數字;
 指數必須為整數
 如12.3e3 ,123E2, 1.23e4 , e-5(×) , 1.2E-3.5 (×)

實型常量的型別

 預設double型
 在實型常量後加字母f或F,認為它是float 型
 在實型常量後加字母l或L,認為它是long double 型
例如:
1.23E10 0.23E-4

45.e+23 -23.68E12

1.23E10F 0.23E-4f

45.e+23L -23.68E12L

字元常量

定義:用單引號括起來的單個普通字元或轉義字
符.
 普通字元: ‘a’ ‘A’ ‘? ’ ‘\n’ ‘\101’
 轉義字元:反斜線後面跟一個字元或一個程式碼值表示
字元常量的值:該字元的ASCII碼值
 ‘A’—65, ‘a’—97,‘0’—48 , ‘\n’—10
字元在儲存時將其相應的ASCII程式碼放到儲存單元中。
如果字元變數c1的值為’a’,c2的值為’b’,則在變數中
存放的是’a’的ASCII碼97,‘b’ 的ASCII碼98,詳見附
錄A。
字元資料是以ASCII碼儲存的,它的儲存形式就與整數
的儲存形式類似。因此字元資料和整形資料之間可以在
一定程度上相互轉換。

字串常量

 定義:用雙引號("")括起來的字元序列
 儲存:每個字串尾自動加一個 ‘\0’ 作為
字串結束標誌
 例 字串"hello"在記憶體中: h e l l o \0
 例 空串 “”
 字元常量與字串常量不同
注意
如果一個字串實在很長,一行寫
不下,可以在行尾插入一個斜槓符
號,以示意編譯器下行繼續:
cout<<" *\n ***\n **\n\
****\n *****\n ***\n *\n";

變數

在程式執行期間其值可以改變的量稱為變數。
一個變數在記憶體中佔據一定的儲存單元,在該儲存單元中存放變數的值。
注意區分變數名和變數值這兩個不同的概念。
在這裡插入圖片描述
注意
對多個變數在定義時賦予同一初值,必須分別
指定,不能寫成
float a=b=c=4.5; //錯誤
而應寫成
float a=4.5,b=4.5,c=4.5;

float a,b,c;
a=b=c=4.5;

常變數

在定義變數時,如果加上關鍵字const,則變數的值在程式執行期間不能改變,這種變數稱為常變數(constant
variable)。
const int a=3;
在定義常變數時必須同時對它初始化,此後它的值不能再改變。
const int a; a=3; //錯誤
可以用表示式對常變數初始化,如
const int b=3+6, c=3*cos(1.5);
 注意:由於使用了系統標準數學函式cos,必須將包含該函式有
關的資訊的標頭檔案“cmath”(或math.h)包含到本程式單位中來。
常變數又稱為只讀變數(read-only-variable)。

運算子

自增和自減運算子

自增(++)和自減(–)運算子的作用是使變數的值增1或
減1,
 前置 ++i, --i (先執行i+1或i-1,再使用i值)
 後置 i++, i-- (先使用i值,再執行i+1或i-1)
++i與i++的***區別***在於:
 如果++i與i++又作為分量參加其他運算的話,
 ++i是先令i加1然後參加其他運算;
 i++是先令i參加其他運算,而後再令i加1。
 例:
x=i++; //結果等價於{ x=i; i=i+1; }
x=++i; //結果等價於{ i=i+1; x=i; }
++ --結合方向: 自右向左
例 -i++  -(i++)

各類數值型資料間的混合運算

 int、float、double型資料可以混合運算
 char、int型資料可以通用
在這裡插入圖片描述

強制型別轉換運算子

在表示式中不同型別的資料會自動地轉換型別進行運算。
還可以利用強制型別轉換運算子將一個表示式轉換成所
需型別。
強制型別轉換的一般形式為
(型別名)(表示式)
例如:
(double)a (將a轉換成double型別)
(int)(x+y) (將x+y的值轉換成整型)
(float)(5%3) (將5%3的值轉換成float型)
注意
如果要進行強制型別轉換的物件是一個變數,該變數
可以不用括號括起來。
如果要進行強制型別轉換的物件是一個包含多項的表
達式,則表示式應該用括號括起來。
例如x=3.6;y=4.2
(int)x+y 與(int)(x+y)的區別
在強制型別轉換時,得到一個所需型別的中間變數,
但原來變數的型別未發生變化。
#include
using namespace std;
int main( )
{ float x;
int i;
x=3.6;
i=(int)x;
cout<<“x=”<<x<<",i="<< i<<endl;
return 0;
}

賦值轉換規則:使賦值號右邊表示式值自動轉換成其左邊變數的型別

 例:
float f;
int i;
i=10;
f=i; // f=10.0
i=2.56; //結果i=2;