程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++Primer學習筆記《1》

C++Primer學習筆記《1》

編輯:C++入門知識



Void也是一種類型,常用於返回值為void的函數return處。


C++只是規定了各種基本內置類型的最小存儲空間,並沒有限制其上限值,對於int,大部分的編譯器實現采用的空間都會比要求的大,一般為32bits。但其規定最小空間大小是16bits。


在C++中,並沒有關於bool類型的最小存儲空間限制,bool變量在C++也許是不占用內存空間的,語言層面的實現就是宏定義,定義了兩個值,true和false。


Short,int的最小16bits; long最小32bits


Float類型只能表示6位有效數字,運算中會產生丟失精度的情況,不適合浮點運算。Double能表示10位有效數字,適合浮點運算,關鍵是double的運算成本基本和float的扯平,多出的部分可以忽略不計。


一般的編譯器實現中,short占半個字長(一台32位的機器,其字長是4個字節,也就是一個字),int一個字長,long一個或兩個字長(在32位機器中,通常情況下long和int都是一個字長)。


可以將算術類型的任何值(無論整型與浮點型,無論正與負或是0,都可以)賦給bool類型的變量,原則是0值代表false,其余的非0值均為true。


整型是有無符號和有符號之分的,關鍵字是unsigned。


在C++中將負數賦給無符號整數是合法的,但變量中存儲的值是被取模後的值。


浮點數是區別於整型為代表的定點數得名的,點就是實數中的小數點。一般情況下float采用一個字(32bits),double采用兩個字(64bits),long double采用三個或是四個字(96bits或是128bits)。類型的取值范圍決定了浮點數能表示的有效數字位數。


整型運算中,long類型雖然精度高於int,但其增加的運算成本卻是不可忽略的,成本大大增加。


字面值常量,稱之為字面值是因為只能用它的值來稱呼它,常量是因為它不能被修改。每一個字面值都有對應的類型,但其統統為常量。只有基本內置類型有字面值常量,類類型沒有字面值常量。


以0(零)開頭的字面值表示8進制數,以0x或是0X開頭的字面值表示16進制的數。整型字面值的默認類型是int或是long,如果值的大小在int表示范圍內就是int;如果超出了int那就是long。


字面值後面加u或是U可以將字面值變成無符號。同理加上l或是L可變成長類型。


默認的浮點型字面值是double,除非顯示的在浮點數後面加上f或是F明確指出浮點類型是float。


Bool類型的字面值就是true和false這兩個值。


字符串字面值的前面或是後面添加l或是L均可變成寬字符。


將字符串字面值和寬字符串字面值連接,將會出現未定義行為。


多行字符串字面值需要用反斜槓來分行,“\”,但必須保證該反斜槓是本行的最後一個字符了,後面不允許注釋和空格,後繼行的任何字符都被視為字符串成分,所以後繼行沒有正常的縮進。(這一點類似於用宏定義表示一個跨多行的函數)


左值和右值,簡單來講就是可以作為賦值運算符(等號“=”)的左邊的是左值,在右邊的是右值。左值的深層次是具有內存空間的變量,例如i++不是左值,++i就是左值。


初始化分為直接初始化和賦值初始化兩種,int value = 11;這就是學習初期經常用的復制初始化。其直接初始化表示int value(11);內置類型的這兩種情況基本不差別,但對於類類型的對象來說,這兩者就是有著很大的差別。對於對象的初始化細節等詳見csdn博客。


聲明和定義的區別詳見csdn博客。定義變量的實質是開辟空間,在一個程序中,一個變量只能有且僅有一個定義。聲明通過extern關鍵字聲明變量而不定義,在一個程序中,一個變量的聲明可以有多次。

Extern int value;是標准的聲明式。但extern int value = 11;這就是定義了。


變量的作用域:全局作用域,類作用域,名空間作用域,局部作用域,塊作用域,括號作用域。


全局作用域下的變量默認為extern,可被外部文件訪問的。加上const後就強制成本文件的局部變量,不可被外部文件訪問,這也就是為什麼頭文件內可以定義const全局變量。要想讓其成為全局,需要extern。


頭文件中一般不用於定義,三個例外,類定義,inline函數,const變量。


引用是一種復合類型,所謂復合類型就是指本類型的定義需要用到其他的類型,不能定義引用類型的引用,但可以定義任何其他類型的引用(數組本身可以有引用,但其元素類型不能為引用,因為無法初始化)。

Int &value = 11;是錯誤的;但const int &value = 11;這就可以。


Double dval = 3.14; const int &ri =dval;這種跨類型的引用是可以的。編譯器在實現過程中做了一次類型轉換,中間多出了int tempint = dval; const int &ri = tempint;

總結:非const引用只能綁定同類型的對象,const引用可以綁定不同類型的對象或右值。


每一個定義的枚舉都是一種類型,枚舉被看做是編譯器常量,枚舉成員的值可以不唯一。


字符串字面值的常量折疊原則:將同一個字符串字面值賦給多個變量,這些變量會有同一個地址,在實踐中const和define一個效果,不會有任何存儲空間用於存儲const變量。




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved