tft每日頭條

 > 生活

 > 布爾型數據隻有兩個值

布爾型數據隻有兩個值

生活 更新时间:2024-07-23 05:12:40

布爾型數據隻有兩個值?這裡順便回顧一下C中的知識:,今天小編就來說說關于布爾型數據隻有兩個值?下面更多詳細答案一起來看看吧!

布爾型數據隻有兩個值(布爾類型内聯函數)1

布爾型數據隻有兩個值

1)布爾類型
  1. bool a = false;
  2. cout << a << " " << boolalpha << a << endl;
  3. /*
  4. bool 布爾類型:
  5. true為真,false為假
  6. 任何基本類型都可以隐士轉換為bool類型
  7. 非0即真,0即假
  8. boolalpha -> 相當于一個開關,表示開,打印true和false
  9. noboolalpha -> 表示關,關閉後打印 0||1
  10. */

這裡順便回顧一下C中的知識:

  1. a = *("abc" 3); // 0->a 1->b 2->c 3->\0
  2. cout << a << endl;
  3. /*
  4. 這三種意思相同
  5. a = *("abc" 3);
  6. a = "abc"[3];
  7. a = 3["abc"];
  8. */
2)内聯函數

内聯 inline: 和#define很像

就是用已被編譯好的二進制代碼,替換對函數的調用,避免調用開銷(棧區到代碼區的調用)

使用inline關鍵字期望該函數被優化内聯,不過是否内聯由編譯器決定

内聯函數的缺點:inline會使占用内存變大

另外!複雜的函數和遞歸不可以用内聯,因為遞歸是調用自己,會占用非常大非常大的内存空間。

  1. inline int Max(int a,int b){
  2. return a>b?a:b;
  3. }
  4. int main()
  5. {
  6. Max(10,20);
  7. return 0;
  8. }
3)重載!

重載:同一作用域,函數名相同,參數表不同的函數

重載和形參名無關

不同作用域同名函數遵循臨近隐藏原則

重載和返回類型無關

參數表不同:1.類型不一樣 2.數目不一樣 3.順序不一樣

  1. void foo(){
  2. cout << "void foo();" << endl;
  3. }
  4. void foo(int a){
  5. cout << "void foo(int a);" << endl;
  6. }
  7. void foo(int a,int b){
  8. cout << "void foo(int a,int b);" << endl;
  9. }
  10. void foo(int a,double b){
  11. cout << "void foo(int a,double b);" << endl;
  12. }
  13. void foo(double a,int b){
  14. cout << "void foo(double a,int b);" << endl;
  15. }
  16. int main()
  17. {
  18. foo();
  19. foo(1);
  20. foo(1 , 2);
  21. foo(1 , 3.14);
  22. foo(3.14 , 1);
  23. }

那麼!問題來了!編譯器是怎麼區别函數的重載的呢?

其實,我們起的函數的名字編譯器會給我們改掉

我們在Linux下用nm命令查看一下C 編譯器給函數取的名字

  1. # nm 2.out
  2. 0000000100000de0 T __Z3foodi
  3. 0000000100000cf0 T __Z3fooi
  4. 0000000100000d90 T __Z3fooid
  5. 0000000100000d40 T __Z3fooii
  6. 0000000100000b50 T __Z3foov

我們可以看到C 的編譯器給我們取的函數名是帶了參數的~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved