bool變量:
C++相對於C語言加入了bool變量,其值為true(1) 和 false(0)。true表示不為零的數 false表示為零的數,占用一個字節的空間。
代碼:
/* 編譯環境
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04)
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Begin...\n");
bool a = false;
int b = 10;
printf("bool size = %d\n",(int)sizeof(a));//打印bool變量的大小
/*a = 0 b = 10*/
printf("a = %d\t",a);
printf("b = %d\n",b);
/*a = 1 b=1*/
a = b;
b = a;
printf("a = %d\t",a);
printf("b = %d\n",b);
/*a = 0 b=0*/
b = 0;
a = b;
printf("a = %d\t",a);
printf("b = %d\n",b);
/*a = 1 b =10*/
b+=10;
a = b;
printf("a = %d\t",a);
printf("b = %d\n",b);
/*a = 1 b=1*/
a +=10;
b = a;
printf("a = %d\t",a);
printf("b = %d\n",b);
printf("End...\n");
return 0;
}
運行結果:
布爾變量是C++的基本數據類型,支持運算,這樣做是為了兼容C語言。但是編譯器會吧計算的結果還原成一個bool值。
可以定義為 常量、全局變量、常量、指針、數組...
C++對三目運算符的改進:
測試代碼:
#include <stdio.h> int main(int argc, char *argv[]) { printf("Begin...\n"); int a = 5; int b = 2; (a < b ? a:b) = 10; //運行結果 b=10 a=5 //(a < b ? a:1) = 10; //將會報錯 printf("a = %d\t",a); printf("b = %d\n",b); printf("End...\n"); return 0; }
在 C語言編譯器中運行結果
提示,左值錯誤
使用C++編譯器
未報錯 正常運行。
當 可能返回值中出現常量時,所報的錯誤與 C 中錯誤一致。
C 語言中 不允許 三目運算符為左值 。例如 (a<b ? a:b) = 10; 這樣的寫法 在C語言中是錯誤的。
C++中對三目運算符做出了增強,允許在三目運算符為左值,但是可能返回值種不能出現常量。因為常量不能等於另外一個常量。C++之所以能夠這樣操作是因為C++增加了一個“引用”的概念
C++對三目運算符做了什么了?
——當三目運算符的可能返回是變量的時候,返回的是一個引用。
——當三目運算符的可能返回是常量的時候,返回的是一個常量
C++的 引用:
測試代碼:
#include <stdio.h> int main(int argc, char *argv[]) { printf("Begin...\n"); int a = 10; int &b = a; //int &b = 1; //報類型錯誤 //float &b = a;//報類型錯誤 printf("a = %d\t",a); //運行結果 a = b = 10 a的地址 = b的地址 printf("b = %d\n",b); printf("a = 0x%p\t",&a); printf("b = 0x%p\n",&b); return 0; }
測試1:
a = 10; b = 10; 而且a 與 b的地址相同。
測試2:
證明:引用的類型不能是常量。
測試3:
由於C++語言是一個強類型的語言,對類型檢查相當嚴格,所以使用一個float型的變量去 引用一個int 型的變量 是不允許的。
“引用”可以看成一個已經定義變量的 別名。引用語法 Type & name = var;
例如:int a = 5;
int &b =a;
b = 10;
上面的代碼運行后,a = 10; b = 10; 而且a 與 b的地址相同。所以通過上述特性 在C++中一個變量是可以有多個 不同的名字的。(也就是說一個內存空間是可以有多個名字的,這個多個名字指向同一個內存空間)。
由於 C++是一個強類型語言,在對類型檢查的過程中,如果類型不同將會報錯。所以普通引用在定義時必須用同類型的變量進行初始化。
小結:
bool類型是C++增加的一個新的基礎類型
bool類型的值只能是 false 或者 true
C++的三目運算符可以作為左值
C++的yiny可以看做變量的別名來使用
三目運算符的可能都是變量時,返回的是引用