第4課-布林型別和引用
阿新 • • 發佈:2018-12-12
一、布林型別
C++中的布林型別
- C++在C語言的基本型別系統之上增加了
bool
- C++中的
bool
可取的值只有true
和false
- 理論上
bool
只佔用一個位元組
注意:true
代表真值,編譯器內部用1來表示;false
代表非真值,編譯器內部用0來表示
bool型別只有
true
(非0)和false
(0)兩個值C++編譯器會將非0值轉換為
true
,0值轉換為false
程式設計實驗:布林型別的使用
#include<iostream>
int main(int argc,char *argv[]){
bool b = false;
int a = b;
printf("sizeof(b) = %d\n",sizeof(b));
printf("b = %d,a = %d\n",b,a);
b = 3;
a = b;
printf("b = %d, a = %d\n", b, a);
b = -5;
a = b;
printf("b = %d, a = %d\n", b, a);
a = 10;
b = a;
printf("a = %d, b = %d\n", a, b);
a = 0;
b = a;
printf ("a = %d, b = %d\n", a, b);
return 0;
}
列印結果:
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);
- C語言中的三目運算子返回的是變數值
- 不能作為左值使用
- C++中的三目運算子可直接返回變數本身
- 既可作為右值使用,又可作為左值使用
注意:三目運算子可能返回的值中如果有一個常量值,則不能作為左值使用
三、C++中的引用
變數名回顧
- 變數是一段實際連續儲存空間的別名
- 程式中通過變數 來申請並命名儲存空間
- 通過變數的名字可以使用儲存空間
在C++中新增加了引用的概念
- 引用可以看作一個已定義變數的別名
- 引用的語法:Type&name = var;
int a = 4; int& b = a; //b 為 a的別名 b = 5; //操作b就是操作a
注意:普通引用在定義時必須用同類型的變數進行初始化
例項分析:引用初體驗
#include<stdio.h>
int main(int argc,char *argv[]){
int a = 4;
int& b = a;
b = 5;
printf("a = %d\n",a);
printf("b = %d\n",b);
printf("&a = %p\n",&a);
printf("&b = %p\n",&b);
return 0;
}
列印結果:
a = 5
b = 5
&a = 000000000062FE44
&b = 000000000062FE44
C++對三目運算子都做了什麼?
- 當三目運算子的可能返回都是變數時,返回的是變數引用
- 當三目運算子額可能返回中有常量時,返回的是值
int a = 1;
int b = 2;
(a < b?a : b) = 3; //正確,返回a或b的引用,可作為左值
(a < b?1 : b) = 4; //錯誤,返回1或b的值,不能作為左值
四、總結
bool
型別是C++新增加的基礎型別bool
型別的值只能是true
和false
- C++中的三目運算子可作為左值使用
- C++中的引用可以看作變數的別名來使用
- 三目運算子的可能返回都是變數時,返回的時引用