2 C 中的bool型別,三目運算子,引用

2022-03-10 17:43:41 字數 2450 閱讀 7746

本章主要內容:

1.布林型

bool

在c++中

,bool

型別只有

true(

0)

flase(0)

兩個值,且bool型別只占用了乙個位元組.

例如:

#include int

main()

輸出結果:

b=0

a=1,b=1

2.c++三目運算子

c++對三目運算子進行了公升級

,公升級後的三目運算子可以放在左值使用,

例如:

int a=1,b=2

;(a>b?a:b)=100; //

由於a不大於b,所以返回值為b變數,即等價於: b=100

printf(

"a=%d,b=%d\n

",a,b );

輸出結果:

a=1,b=100

注意:放在左值使用時

,三目運算子可能返回的值都必須是變數

,若有常量

,則編譯會報錯

.3.c++的

&引用

3.1 引用在定義時,必須初始化,且型別必須一致,初始化的值必須是變數,而非常量

只用const

引用才允許初始化的值是常量

(在3.3小節會講解),

例如:

int a=4

;int &b=a; //

引用b是a的別名,也就是a和b都是同乙個變數,操作b就等於操作a

//int &b=1;

//出錯,因為只有const引用才允許初始化的值是常量

3.2 &引用的本質

引用的本質就是乙個指標常量

(從反彙編看出

),因此引用所占用的空間大小與指標相同,比如

:

int & a;    <---等價於-->  int *const a;

引用比指標更適合做為函式的引數,具有更好的可讀性,例如

:

#include /*

交換a和b的值

*/void swap(int& a,int&b)

intmain()

輸出結果:

a=10  b=5

3.3 const &引用

const &修飾為唯讀變數

例如:

#include int

main()

輸出結果:

a=10,b=0,c=0

a=10,b=10,c=10

從結果可以看出:

注意:在初始化時

,比如變數c和

const引用b

定義的型別不同

,則將會生成乙個新的儲存空間給

b,並賦值

.例如:

char c= 'c'

;

const

int &b =c;

c='b'; //

修改c的值,對b沒有任何影響

printf(

"b='%c' c='%c'\n

",b,c);

輸出結果:

b='

c' c='

b'

3.4 引用陣列

c++不支援引用陣列

,

因為在c中,

陣列存放的是連續相鄰的一串資料,所以

c++也要相容該特性。

而引用恰好破壞了該特性.

以乙個錯誤為例:

#include int a = 1; //

全域性變數

intmain()

; //

編譯出錯

delete pc;

return0;

}

從上面可以看到

a, b, *pc這3

個變數的定義位置都不同

,分配的儲存空間位址也是不連續的

,然後又使

:所以導致陣列存放的資料不是連續相鄰的,編譯出錯

下章接著來學習: 

3.c++內聯函式,預設引數,佔位引數

2 C 語言運算子過載

運算子過載 在c 中,運算子的過載就是把運算子的符號賦予新的含義,如果類過載了運算子,那麼就可以用判斷兩個類是否相等。include include class cgirl int main 通過上述結果能夠知道,因為操作符過載函式 operator 是cgirl類的乙個成員函式,所以物件girl1...

C 條件運算子(三目運算子)

在某些情況下,可以用條件運算子 來簡化if語句。是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式1的值為假 或為0 ...

C 條件運算子(三目運算子)

在某些情況下,可以用條件運算子 來簡化if語句。基本格式 是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 執行流程 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式...