布爾類型 bool
在C++中,bool類型只有true(非0)和false(0)兩個值,且bool類型只佔用了一個字節。
true:非0,編譯器內部用1來表示。
false:0 ,編譯器內部用0表示。
示例程序一:
#include <stdio.h>
int main(int argc, char *argv[])
{
bool b = 0; //合法,兼容c語言特性,0代表false
printf("b = %d\n", b);
//bool類型支持數學運算
b++;
printf("b = %d\n", b);
b = b - 3;
printf("b = %d\n", b);
return 0;
}
結果如下:
分析:在C++中,遇到布爾類型bool時,將bool類型當成一個只佔用1個字節的整形數。
示例程序二:
#include <stdio.h>
int main(int argc, char *argv[])
{
bool b = false; //0
int a = b;
printf("sizeof(b) = %d\n", sizeof(b)); //1
printf("b = %d, a = %d\n", b, a); //0, 0
b = 3;
a = b;
printf("b = %d, a = %d\n", b, a); //1, 1
b = -5;
a = b;
printf("b = %d, a = %d\n", b, a); //1, 1
a = 10;
b = a;
printf("a = %d, b = %d\n", a, b); //10, 1
a = 0;
b = a;
printf("a = %d, b = %d\n", a, b); //0, 0
return 0;
}
結果如下:
三目運算符
三目運算符即可作為右值使用,又可作為左值使用。
示例程序一:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
(a < b ? a : b) = 3; // a = 3;
printf("a = %d, b = %d\n", a, b);
return 0;
}
結果如下:
示例程序二:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
(a < b ? a : 2) = 3;
printf("a = %d, b = %d\n", a, b);
return 0;
}
結果如下:
三目運算符可能返回的值中如果有一個是常量值,則不能作為左值使用。
意義:如果三目運算符的返回都是變量的時候,返回的是變量的本身。
引用
變量名的本質是存儲空間的別名。
引用:已定義變量的別名
引用的語法:Type& name = var;
引用在定義時,必須初始化,且類型必須一致,初始化的值必須是變量,而非常量。
int a = 4;
int& b = a; //b為a的別名
b = 5; //操作b就是操作a,本質是將5賦值給a,a=5
注意:普通引用在定義時必須用相同類型的變量進行初始化。
示例程序一:
#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);
//相同的地址,意味着a和b標識符代表內存同一段連續的空間
printf("&a = %p\n", &a);
printf("&b = %p\n", &b);
return 0;
}
結果如下:
在C++,完全可以對同一段連續的內存,起任意多的別名。
示例程序二:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 4;
float& 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;
}
結果如下:
因為C++是強類型的語言。引用b的類型 必須和 變量a要一樣。
C++中對三目運算符
當三目運算符的可能返回都是變量時,返回的是變量引用
當三目運算符的可能返回中有常量時,返回的是值
int a = 1;
int b = 2;
(a < b ? a : b) = 3; //正確,返回a或b的引用,可作為左值
(a < b ? 1 : b) = 4; //錯誤,返回1或b的值,不能作為左值
小結
bool類型是C++新增加的基礎類型
bool類型的值只能是true(非0)和false(0)
C++中的三目運算符可作為左值使用
C++中的引用可以看作變量的別名來使用
三目運算符的可能返回都是變量時,返回的是引用