第四課 布林型別和引用 狄泰學院

2021-10-09 16:09:09 字數 3044 閱讀 1616

c++中的布林型別

c++中的c語言的基本型別系統之上增加了bool

c++中的bool可取的值只有true和false

理論上bool只占用乙個位元組

注意:true代表真值,編譯器內部用1來表示

false代表非真值,編譯器內部用0來表示

bool型別只有true(非0)和false(0)兩個值

c++編譯器會將非0值轉換為true,0值轉換為false

下面的**輸出什麼?0,1,1 0(false), 1(true), -2(true)

bool b = 0;

printf(「b = %d\n」, b);

b ++;

printf(「b = %d\n」, b);

b = b - 3;

printf(「b = %d\n」, b);

#include int main(int argc, char *ar**)

執行結果:

lkk@lkk-virtual-machine:~/c++$ g++ 4-1.cpp

4-1.cpp: in function 『int main(int, char**)』:

4-1.cpp:8:41: warning: format 『%d』 expects argument of type 『int』, but argument 2 has type 『long unsigned int』 [-wformat=]

printf("sizeof(b) = %d\n", sizeof(b));

^lkk@lkk-virtual-machine:~/c++$ ./a.out

sizeof(b) = 1

b = 0, a = 0

b = 1, a = 1

b = 1, a = 1

a = 10, b = 1

a = 0, b = 0

布林型別是c++中的基本資料型別

可以定義bool型別的全域性變數

可以定義bool型別的常量

可以定義bool型別的指標

可以定義bool型別的陣列

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

下面的**正確嗎?

int a = 1;

int b = 2;

(a < b ? a : b) = 3;

printf(「a = %d, b = %d\n」, a ,b);

test.cpp

#include int main(int argc, char *ar**)

執行結果

lkk@lkk-virtual-machine:~/c++$ g++ test.cpp

lkk@lkk-virtual-machine:~/c++$

test.c

#include int main(void)

執行結果

lkk@lkk-virtual-machine:~/c++$ gcc test.c

test.c: in function 『main』:

test.c:8:21: error: lvalue required as left operand of assignment

(a < b ? a : b) = 3;

c語言中的三目運算子返回的是變數值

不能作為左值使用

c++中的三目運算子可直接返回變數本身

既可作為右值使用,又可作為左值使用

注意:三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用。

思考c++對三目運算子做了怎樣的公升級?這種公升級的意義是什麼?

所有可能的返回都是變數時,它返回的是變數本身,具體內容是c++的引用

變數名回顧

變數是一段實際連續儲存空間的別名

程式中通過變數來申請並命名儲存空間

通過變數的名字可以使用儲存空間

問題:一段連續的儲存空間只能有乙個別名嗎?可以有其他別名

在c++中新增加了引用的概念

引用可以看做乙個已定義變數的別名

引用的語法:type& name = var;

int a = 4;

int& b = 4; //b為a的別名,a的型別為int,b的型別也為int

b = 5; //操作b就是操作a

注意:普通引用在定義時必須用同型別的變數進行初始化。

#include int main(int argc, char *ar**)

執行結果

lkk@lkk-virtual-machine:~/c++$ g++ 4-2.cpp

lkk@lkk-virtual-machine:~/c++$ ./a.out

a = 5

b = 5

&a = 0x7ffd6546513c

&b = 0x7ffd6546513c

當將改為float& b = a;

報錯:4-2.cpp: in function 『int main(int, char**)』:

4-2.cpp:6:16: error: invalid initialization of non-const reference of type 『float&』 from an rvalue of type 『float』

float& b = a;

c++對三目運算子做了什麼?

當三目運算子的可能返回都是變數時,返回的是變數引用

當三目運算子的可能返回中有常量時,返回的是值

int a = 1;

int b = 2;

(a < b ? a: b) = 3; //正確,返回a或b的引用,可作為左值

(a < b ? 1: b) = 3; //錯誤,返回1或b的值,不能作為左值

小結bool型別是c++新增加的基礎型別

bool型別的值只能是true和false

c++中的三目運算子可作為左值使用

c++中的引用可以看做變數的別名來使用

三目運算子的可能返回都是變數時,返回的是引用

狄泰C 課程學習筆記 第四課 bool型別和引用

c語言中,沒有原生的bool型別,一般的,c中通過 typedef bool int 的方式來實現bool型別 然而在c 中,bool卻成為了內建的原生資料型別,其值有true false兩個,本質上,bool和int float double等原生資料型別並沒有什麼區別,類似的,我們也可以定義bo...

第四課 BLOB型別

向資料庫中插入blob型別的資料 public static void test01 catch exception e finally 從資料庫中讀取blob型別的資料到檔案 將blob型別的資料轉換成輸入流 binarystream blob.getbinarystream 從輸入流程讀取資料並...

decimal 型別資料怎麼引用 第四課 數字型別

小夥伴們好,猜周幾小遊戲我們就告一段落了,今天我們來一起學習一下python的數字型別。python有三種數字型別 分別是整數,浮點數和複數,下面我們依次講解。可以看出,這是兩個非常大的數進行乘和除的運算,只要把資料敲進去,python一秒就能給出答案。另外可以看到,除法運算不能整除會出現小數。其實...