欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中bool變量的深入理解

 更新時(shí)間:2021年08月26日 12:45:54   作者:精致的灰(>_<)  
C語言中沒有BOOL類型變量,它是C++獨(dú)有的,由于使用BOOL類型可以使代碼更具有可讀性,下面這篇文章主要給大家介紹了關(guān)于C語言中bool變量的相關(guān)資料,需要的朋友可以參考下

前言

在一些高級語言當(dāng)中,為了能夠完成更好的邏輯判斷,因此就有了bool類型,bool類型的變量值只有true和false兩種。

而在C語言中,一般認(rèn)為0為假,非0為真。

這是因?yàn)閏99之前,c90是沒有bool類型的的。但是c99引入了_Bool類型(_Bool就是一個(gè)類型,不過在新增頭文件stdbool.h中,被重新用宏寫成了 bool,為了保證C/C++兼容性)。

目前為止大部分C語言書籍采用的標(biāo)準(zhǔn)還是c90標(biāo)準(zhǔn),因此我們很少用bool類型。

bool類型變量的大小

可以看到,這里的bool類型的大小和我們平時(shí)的真或假的大小是不一樣的。

下面是bool類型的源碼:

可見,stdbool.h中定義了4個(gè)宏,bool、true、false、__bool_true_false_are_defined。 其中bool就是 _Bool類型,true和false的值為1和0,__bool_true_false_are_defined的值為1。
注意這里的bool類型和char類型雖然都是1字節(jié),但是它們是不同的:char 中存儲(chǔ)字符,全局變量初始值為'\0',bool 中存0或1,全局變量默認(rèn)初始化為0。

C語言中的邏輯表達(dá)式的返回結(jié)果,比如 a==b的返回結(jié)果,只有0和1兩種可能,但是它們的大小確是4,也就是用整形表示真假:

另外,在VS2013中,微軟還給我們設(shè)計(jì)了大寫的BOOL類型,這個(gè)類型在VS2019中就被刪除了,BOOL類型將int進(jìn)行了重命名,因此它的大小是4個(gè)字節(jié)。不推薦這種類型,因?yàn)檫@是微軟的標(biāo)準(zhǔn),如果換到其他編譯環(huán)境則無法使用。

bool 值與0比較

對于if條件的表達(dá)式,一般有以下三種寫法:

#include <stdio.h> 
int main()
{
	int pass = 0; //0表示假,C90,我們習(xí)慣用int表示bool 
	if (pass == 0)
	{ 
		//理論上可行,但此時(shí)的pass是應(yīng)該被當(dāng)做bool看待的,
		//這里與整形數(shù)字0比較,這種表示方法在語義上并不直觀,不推薦 
	}
	if (pass == false)
	{ 
		//不推薦,因?yàn)橹荒茉贑99中使用
	}
	if (pass)
	{ 
		//推薦 

	}
	return 0;
}

之所以推薦使用第三種,因?yàn)閕f語句在開始使用時(shí)先要進(jìn)行條件判定,而判定的正是括號()中表達(dá)式或函數(shù)的邏輯結(jié)果,這個(gè)邏輯結(jié)果只有真或假。

在這里pass并沒有進(jìn)行任何條件判定,所以pass本身就是邏輯結(jié)果,這樣就能反應(yīng)出來flag是真或者假,這里pass的值是0表示假,如果想要其表示真只需要加邏輯反!即可:!pass

如果要采用bool類型:

#include <stdio.h> 
#include <stdbool.h>
int main()
{
    bool pass = false; //C99
	if (pass != 1)
	{ 
		//與整形數(shù)字0比較,這種表示方法在語義上并不直觀,不推薦 
		//另外,非0為真,但是非0有多個(gè),這里也不一定是完全正確的
	}
	if (pass != true)
	{ 
		//不推薦,這樣寫雖然沒有問題,但是并不直觀
	}
	if (!pass)
	{ 
		//推薦,pass本身表示假,取反表示真

	}
	return 0;
}

結(jié)論:bool類型,直接判定,不用操作符進(jìn)行和特定值的比較。

c語言中bool如何輸出

c中的bool型就是0和1,因此可以用%d輸出,因此。。。代碼如下:

#include <stdio.h>

void main()
{
bool b = true;
printf("%d\n",b);

bool c = false;
printf("%d\n",c);
}


總結(jié)

到此這篇關(guān)于C語言中bool變量的文章就介紹到這了,更多相關(guān)C語言bool變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用C語言調(diào)用luajit的方法詳解

    使用C語言調(diào)用luajit的方法詳解

    C語言是一種非常流行的編程語言,而Lua是一種基于C語言開發(fā)的腳本語言,在Lua的各種實(shí)現(xiàn)中,luajit也是其中一種非常流行的實(shí)現(xiàn),在本文中,我將為大家介紹如何使用C語言調(diào)用luajit,并且詳細(xì)介紹如何傳入?yún)?shù),傳入結(jié)構(gòu)體參數(shù),以及獲取返回值
    2023-11-11
  • C++存儲(chǔ)方案和動(dòng)態(tài)分配

    C++存儲(chǔ)方案和動(dòng)態(tài)分配

    這篇文章主要介紹了C++存儲(chǔ)方案和動(dòng)態(tài)分配,
    2021-12-12
  • C++ boost庫的安裝過程詳解

    C++ boost庫的安裝過程詳解

    這篇文章主要介紹了C++ boost庫的安裝過程詳解,文中通過示例代碼和圖片介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 區(qū)分c++中的聲明與定義

    區(qū)分c++中的聲明與定義

    這篇文章主要介紹了如何區(qū)分c++中的聲明與定義,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • VC中SDK與MFC的區(qū)別淺析

    VC中SDK與MFC的區(qū)別淺析

    這篇文章主要介紹了VC中SDK與MFC的區(qū)別淺析,需要的朋友可以參考下
    2014-07-07
  • C/C++?實(shí)現(xiàn)動(dòng)態(tài)資源文件釋放的方法

    C/C++?實(shí)現(xiàn)動(dòng)態(tài)資源文件釋放的方法

    當(dāng)我們開發(fā)Windows應(yīng)用程序時(shí),通常會(huì)涉及到使用資源(Resource)的情況。資源可以包括圖標(biāo)、位圖、字符串等,它們以二進(jìn)制形式嵌入到可執(zhí)行文件中,這篇文章主要介紹了C/C++?實(shí)現(xiàn)動(dòng)態(tài)資源文件釋放,需要的朋友可以參考下
    2023-12-12
  • C++實(shí)現(xiàn)從輸入中讀取字符串

    C++實(shí)現(xiàn)從輸入中讀取字符串

    這篇文章主要介紹了C++實(shí)現(xiàn)從輸入中讀取字符串的實(shí)現(xiàn)思路和具體代碼,非常的簡單實(shí)用,有需要的小伙伴可以參考下
    2016-05-05
  • 約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn)

    約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn)

    這篇文章主要介紹了約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-12-12
  • opencv3/C++ 離散余弦變換DCT方式

    opencv3/C++ 離散余弦變換DCT方式

    今天小編就為大家分享一篇opencv3/C++ 離散余弦變換DCT方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)分組導(dǎo)出

    Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)分組導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)分組導(dǎo)出,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定參考價(jià)值,需要的可以了解一下
    2022-06-06

最新評論