C++ bool、三目運算符、引用


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可以看做變量的別名來使用

  三目運算符的可能都是變量時,返回的是引用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM