亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中bool變量的示例分析

發布時間:2021-08-27 09:39:37 來源:億速云 閱讀:163 作者:小新 欄目:開發技術

小編給大家分享一下C語言中bool變量的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前言

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

而在C語言中,一般認為0為假,非0為真。

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

目前為止大部分C語言書籍采用的標準還是c90標準,因此我們很少用bool類型。

bool類型變量的大小

C語言中bool變量的示例分析

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

下面是bool類型的源碼:

C語言中bool變量的示例分析

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

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

C語言中bool變量的示例分析

另外,在VS2013中,微軟還給我們設計了大寫的BOOL類型,這個類型在VS2019中就被刪除了,BOOL類型將int進行了重命名,因此它的大小是4個字節。不推薦這種類型,因為這是微軟的標準,如果換到其他編譯環境則無法使用。

bool 值與0比較

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

#include <stdio.h> 
int main()
{
	int pass = 0; //0表示假,C90,我們習慣用int表示bool 
	if (pass == 0)
	{ 
		//理論上可行,但此時的pass是應該被當做bool看待的,
		//這里與整形數字0比較,這種表示方法在語義上并不直觀,不推薦 
	}
	if (pass == false)
	{ 
		//不推薦,因為只能在C99中使用
	}
	if (pass)
	{ 
		//推薦 

	}
	return 0;
}

之所以推薦使用第三種,因為if語句在開始使用時先要進行條件判定,而判定的正是括號()中表達式或函數的邏輯結果,這個邏輯結果只有真或假。

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

如果要采用bool類型:

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

	}
	return 0;
}

結論:bool類型,直接判定,不用操作符進行和特定值的比較。

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

以上是“C語言中bool變量的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑水县| 遵义县| 易门县| 宜昌市| 托克逊县| 东辽县| 平利县| 嘉义市| 乐业县| 花垣县| 乐安县| 无极县| 信宜市| 普安县| 淮安市| 博罗县| 宜兴市| 汉寿县| 仁化县| 凤冈县| 临汾市| 茶陵县| 祥云县| 谢通门县| 敖汉旗| 建湖县| 辽宁省| 蛟河市| 定兴县| 岳普湖县| 台中县| 成武县| 临颍县| 玉环县| 鄂托克旗| 巩留县| 桐柏县| 科技| 闽清县| 德钦县| 商都县|