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一秒就能給出答案。另外可以看到,除法運算不能整除會出現小數。其實...