亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++簡(jiǎn)明分析講解布爾類(lèi)型及引用

 更新時(shí)間:2022年04月21日 16:07:07   作者:清風(fēng)自在 流水潺潺  
布爾型(Boolean),是一種類(lèi)型變量類(lèi)型,引用(reference)就是C++對(duì)C語(yǔ)言的重要擴(kuò)充。引用就是某一變量(目標(biāo))的一個(gè)別名,對(duì)引用的操作與對(duì)變量直接操作完全一樣

一、C++中的布爾類(lèi)型

  • C++在C語(yǔ)言的基本類(lèi)型系統(tǒng)之上增加了bool
  • C++中的bool可取的值只有true和 false
  • 理論上bool只占用一個(gè)字節(jié)
  • C++編譯器會(huì)將非0值轉(zhuǎn)換為true ,0值轉(zhuǎn)換為false

注意:

true代表真值,編譯器內(nèi)部用1來(lái)表示

false代表非真值,編譯器內(nèi)部用0來(lái)表示

下面看一下這段代碼,加深一下對(duì)bool類(lèi)型的理解。

#include <stdio.h>
 
int main(int argc, char *argv[])
{
    bool b = 0;
    printf("b = %d\n", b);
    b++;
    printf("b = %d\n", b);
    b = b - 3;
    printf("b = %d\n", b);
    return 0;
}

下面為輸出結(jié)果,可以看到0值輸出為0,而非0值輸出為1,和上面介紹的一樣。

接下來(lái)再上一段代碼,再次加深對(duì)布爾類(lèi)型的理解。

#include <stdio.h>
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;
}

下面為輸出結(jié)果,可以看到bool類(lèi)型只占用一個(gè)字節(jié),且輸出符合上面講的理論。

布爾類(lèi)型是C++中的基本數(shù)據(jù)類(lèi)型

  • 可以定義bool類(lèi)型的全局變量
  • 可以定義bool類(lèi)型的常量
  • 可以定義bool類(lèi)型的指針
  • 可以定義bool類(lèi)型的數(shù)組
  • ......

二、C++中的三目運(yùn)算符

C++對(duì)三目運(yùn)算符進(jìn)行了升級(jí)

C語(yǔ)言中的三目運(yùn)算符返回的是變量值

  • 不能作為左值使用

C++中的三目運(yùn)算符可直接返回變量本身

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

注意:三目運(yùn)算符可能返回的值中如果有一個(gè)是常量值,則不能作為左值使用。

通過(guò)下面這個(gè)程序來(lái)說(shuō)明一下C++對(duì)于三目運(yùn)算符的升級(jí)。

#include <stdio.h>
int main(int argc, char *argv[])
{
	int a = 1;
	int b = 1;
	(a < b ? a : b) = 3;
	printf("a = %d, b = %d\n", a, b);
    return 0;
}

下面為輸出結(jié)果,可以看到上面的程序在C語(yǔ)言的編譯條件下編譯不通過(guò),而在C++的編譯條件下編譯通過(guò),這說(shuō)明在(a < b ? a : b)代碼中,因?yàn)閍 < b ,所以輸出a的值,然后把3賦值給a。

C++對(duì)三目運(yùn)算符做了什么?

  • 當(dāng)三目運(yùn)算符的可能返回都是變量時(shí),返回的是變量引用
  • 當(dāng)三目運(yùn)算符的可能返回中有常量時(shí),返回的是值

從C++編譯器輸出結(jié)果也可知,第一種寫(xiě)法編譯可以通過(guò),第二種寫(xiě)法編譯不通過(guò),如下圖所示。

三、C++中的引用

變量名回顧

  • 變量是一段實(shí)際連續(xù)存儲(chǔ)空間的別名
  • 程序中通過(guò)變量來(lái)申請(qǐng)并命名存儲(chǔ)空間
  • 通過(guò)變量的名字可以使用存儲(chǔ)空間

變量命名及對(duì)應(yīng)地址

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

  • 引用可以看作一個(gè)已定義變量的別名
  • 引用的語(yǔ)法: Type& name = var;

注意:普通引用在定義時(shí)必須用同類(lèi)型的變量進(jìn)行初始化。

以下面的程序?yàn)槔f(shuō)明一下引用。

#include <stdio.h>
int main(int argc, char *argv[])
{
	int a = 4;
	int& b = a;    //b為a的別名
	printf("a = %d, b = %d\n", a, b);    //操作b就是操作a
    return 0;
}

下面為輸出結(jié)果,可以看到a和b均為4,這就很好的說(shuō)明了引用的概念。

為了進(jìn)一步理解引用,下面對(duì)上述程序進(jìn)行了修改。

#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;
}

下面為輸出結(jié)果,因?yàn)槲覀兺ㄟ^(guò)a變量的別名b對(duì)a變量進(jìn)行了修改,操作b就相當(dāng)于操作a,C++中可以對(duì)同一段連續(xù)的內(nèi)存起任意多的別名,所以標(biāo)識(shí)符a和b代表內(nèi)存里面同一段連續(xù)的空間。

如果我們把 int& b = a; 改成float& b = a; 或者改成 float& b; 或者改成float& b = 1,則編譯器分別報(bào)如下錯(cuò)誤,這說(shuō)明C++編譯器對(duì)數(shù)據(jù)類(lèi)型要求是非常嚴(yán)格的。

四、總結(jié)

  • bool類(lèi)型是C++新增加的基礎(chǔ)類(lèi)型
  • bool類(lèi)型的值只能是true和false
  • C++中的三目運(yùn)算符可作為左值使用
  • C++中的引用可以看作變量的別名來(lái)使用
  • 三目運(yùn)算符的可能返回都是變量時(shí),返回的是引用

到此這篇關(guān)于C++簡(jiǎn)明分析講解布爾類(lèi)型及引用的文章就介紹到這了,更多相關(guān)C++布爾類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語(yǔ)言static關(guān)鍵字用法詳解

    c語(yǔ)言static關(guān)鍵字用法詳解

    大家好,本篇文章主要講的是c語(yǔ)言static關(guān)鍵字用法詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C語(yǔ)言?超詳細(xì)梳理總結(jié)動(dòng)態(tài)內(nèi)存管理

    C語(yǔ)言?超詳細(xì)梳理總結(jié)動(dòng)態(tài)內(nèi)存管理

    動(dòng)態(tài)內(nèi)存是相對(duì)靜態(tài)內(nèi)存而言的。所謂動(dòng)態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動(dòng)態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存,本文帶你深入探究C語(yǔ)言中動(dòng)態(tài)內(nèi)存的管理
    2022-03-03
  • 詳解C語(yǔ)言sscanf()函數(shù)、vsscanf()函數(shù)、vscanf()函數(shù)

    詳解C語(yǔ)言sscanf()函數(shù)、vsscanf()函數(shù)、vscanf()函數(shù)

    這篇文章主要介紹了詳解C語(yǔ)言sscanf()函數(shù)、vsscanf()函數(shù)、vscanf()函數(shù),是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 使用?Visual?Studio?2022?開(kāi)發(fā)?Linux?C++?應(yīng)用程序的過(guò)程詳解

    使用?Visual?Studio?2022?開(kāi)發(fā)?Linux?C++?應(yīng)用程序的過(guò)程詳解

    Visual?Studio?2022?引入了用于?Linux?C++?開(kāi)發(fā)的本機(jī)?WSL2?工具集,可以構(gòu)建和調(diào)試?Linux?C++?代碼,并提供了非常好的?Linux?文件系統(tǒng)性能、GUI?支持和完整的系統(tǒng)調(diào)用兼容性,這篇文章主要介紹了使用Visual?Studio?2022?開(kāi)發(fā)?Linux?C++?應(yīng)用程序,需要的朋友可以參考下
    2021-11-11
  • c++ builder TreeView控件節(jié)點(diǎn)遍歷代碼

    c++ builder TreeView控件節(jié)點(diǎn)遍歷代碼

    這篇文章介紹了c++ builder TreeView控件節(jié)點(diǎn)遍歷代碼,有需要的朋友可以參考一下
    2013-09-09
  • C++ 迭代器失效問(wèn)題解決

    C++ 迭代器失效問(wèn)題解決

    在C++中,當(dāng)一個(gè)vector進(jìn)行了插入或刪除操作時(shí),其迭代器可能會(huì)失效,本文就來(lái)介紹一下C++ 迭代器失效問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • JsonCpp中double的問(wèn)題解決

    JsonCpp中double的問(wèn)題解決

    本文主要介紹了JsonCpp中double的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解C語(yǔ)言內(nèi)核中的自旋鎖結(jié)構(gòu)

    詳解C語(yǔ)言內(nèi)核中的自旋鎖結(jié)構(gòu)

    自旋鎖是內(nèi)核中提供的一種高IRQL鎖,用同步以及獨(dú)占的方式訪問(wèn)某個(gè)資源。自旋鎖是為了解決內(nèi)核鏈表讀寫(xiě)時(shí)存在線程同步問(wèn)題。本文將講解一下自旋鎖的簡(jiǎn)單應(yīng)用,感興趣的可以了解一下
    2022-09-09
  • C/C++中extern

    C/C++中extern "C" 的作用分析

    這篇文章主要介紹了C/C++中extern "C" 的作用,是在進(jìn)行C/C++程序設(shè)計(jì)中非常常見(jiàn)的用法,需要的朋友可以參考下
    2014-09-09
  • C++無(wú)符號(hào)整數(shù)溢出問(wèn)題解析

    C++無(wú)符號(hào)整數(shù)溢出問(wèn)題解析

    這篇文章主要介紹了C++無(wú)符號(hào)整數(shù)溢出探究,本文主要探討C/C++中無(wú)符號(hào)整數(shù)超過(guò)范圍后的計(jì)算問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論