3 布林型別和引用

2021-09-26 02:48:51 字數 1681 閱讀 5348

1、c++中的布林型別

— c++在c語言的基本型別系統之上增加了bool

— c++中的bool可取的值只有 true 和 false

— 理論上bool只佔乙個位元組

注意:true代表真值,編譯器內部用1來表示

false代表非真值,編譯器內部用0來表示

2、布林型別的值

bool b = 0;

printf("b = %d\n", b);

b++;

printf("b = %d\n", b);

b = b - 3;

printf("b = %d\n", b);

雖然說從概念上c++確實提供了 bool 型別具體的對應的基礎型別,但是它的內部實現還是用乙個位元組的整型,所以為了相容c語言,bool型別是支援數**算的,只不過c++編譯器在內部會進行一些調整,當bool型別進行數**算,它得到的值是乙個非0值,c++編譯器直接將這個非0值直接轉換成true,0值轉換成false

從這個程式我們可以看出,對布林型別賦值乙個非0的數,它會在內部立刻轉換成true,也就是數字1。3、三目運算子

int a = 1;

int b = 2;

(a < b ? a : b )= 3;

printf("a = %d,b = %d\n", a, b);

如果在這裡修改一下**,變成

int a = 1;

int b = 2;

(a < b ? a : 2 )= 3;

printf("a = %d,b = %d\n", a, b);

為什麼會有這樣的差別呢?

注意:

三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用

4、c++中的引用

int a = 4;

int& b = a; //b為a的別名,b和a有相同的型別,都為int

b = 5; //操作b就是操作a

引用在定義的時候必須要進行初始化

#include int main()

int a = 4;

float& b = a; //型別錯誤

float&b; //沒有初始化

int& a = 1; //不能是常量的別名

int a = 1;

int b = 2;

(a < b ? a : b )= 3; //正確,返回的是a或b的引用,可作為左值

(a < b ? 1 : b )= 4; //錯誤,返回1或b的值,不能作為左值

小結:

布林型別和引用

c 中的布林型別 c 在c語言的基本型別系統之上增加了bool c 中的bool可取的值只有true和false 理論上bool只占用乙個位元組 注意 true代表真值,編譯器內部用1來表示 false代表非真值,編譯器內部用0來表示 三目運算子 c語言中的三目運算子返回的是變數值 不能作為左值使用...

C 4 布林型別和引用

注意 true 代表真值,編譯器內部用 1 表示 false 代表非真值,編譯器內部用 0 表示。test 1.cpp include int main 輸出 b 0 b 1 b 1 test 2.cpp include int main 輸出 sizeof b 1 b 0,a 0 b 1,a 1 ...

C 中的布林型別和引用

1,c 中的布林型別 1,c 在 c 語言的基礎型別系統之上增加了 bool 1,c 語言中,沒有 bool 型別存在,往往都是用整型代替 bool 型別,常用 0 表示假,用 1 表示真 2,bool 本來就有這樣的型別,但是在 c 語言中卻沒有這樣的對應基本型別,所以只有使用整型代替 bool ...