1. 程式人生 > >第4課-布林型別和引用

第4課-布林型別和引用

一、布林型別

C++中的布林型別

  • C++在C語言的基本型別系統之上增加了bool
  • C++中的bool可取的值只有truefalse
  • 理論上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型別的值只能是truefalse
  • C++中的三目運算子可作為左值使用
  • C++中的引用可以看作變數的別名來使用
  • 三目運算子的可能返回都是變數時返回的時引用