一
C++的產生和發展:
從C語言發展演變而來,最初被稱為"帶類的C";
1983年正式取名為C + +;
1998年11月被國際標準化組織( ISO )批準為國際標準;
2003年10月15日發布第2版C+ +標準ISO/IEC 14882:2003
2011年8月12日ISO公布了第三版C+ +標準C++11 ,包含核心語言的新機能、擴展C+ +標準程式庫
2014年8月18日ISO公布了C++14 ,其正式名稱:
"International Standard ISO/IEC 14882:2014(E) Programming Language C++";
C+ +14作為C+ + 11的一個小擴展,主要提供漏洞修復和小的改進
C++的特點:
兼容C,支持面向程序的程式設計;
支持面向物件的方法;
支持泛型程式設計方法。
一:C+ +字符集:
1. 大小寫的英文字母: A~Z , a~z
2. 數字字符:0~9
3. 特殊字符:! # % ^ * _ + = - ~ <> / \ ; . , ' {} | " : ? ()
二:關鍵字 (C++預定義的單詞):
1.識別符號:程式員宣告的單詞,它命名程式正文中的一些物體
2.文字
在程式中直接使用符號表示的資料
3.分隔符
0 {} : ;用于分隔各個詞法記號或程式正文
4.運算子(運算子)
用于實作各種運算的符號
5.空白符
空格、制表符( TAB鍵產生的字符)、垂直制表符、換行符、回車符和注釋的總稱
三:名詞定義:
常量
在源程式中直接寫明的資料其值在整 個程式運行期間不可改變,這樣的資料稱為常量。
變數
在運行程序中從計算機的外部設備(例如鍵盤、硬碟)讀取的,這些資料的值在程式運行程序中允許改變,這樣的資料稱為變數。
從鍵盤輸入資料
iostream類的物件cin的> >操作,可以從標準輸入設備(通常是鍵盤)讀入資料。
資料的存盤
為了存盤資料。需要預先為這些資料分配記憶體空間。變數的定義就是在給變數命名的時候分配記憶體空間。
四:整數型別:
基本的整數型別:int
按符號分:
符號的(signed)
無符號的(unsigned)
識別符號的構成規則:
*以大寫字母、小寫字母或下劃線( ——)開始
* 可以由以大寫字母,小寫字母
下劃線(—— )或數字0~ 9組成
* 大寫字母和小寫字母代表不同的
識別符號
* 不能是C++關鍵字或運算子
PS:程式的執行流程不總是順序的因此程式要能夠 :
對執行流程進行選擇(選擇、開關陳述句)
反復用同一演算法依次處理大批量資料(回圈陳述句)
二
四種運算:
一·逗號運算
格式:運算式1,運算式2
求解順序及結果
先求解運算式1 再求解運算式2
最終結果為運算式2的值
二·關系運算
優先次序
< <= = 優先級想同(高)
== != 優先級相同(低)
關系運算式是一種簡單的邏輯運算式
其結果型別認為布爾型別,值只能是true或fales
三·邏輯運算
優先次序:高 低
!(非) &&(與) ||(或)
邏輯運算結果型別為bool,值只能為ture或false
邏輯與……兩真才真,一假則假
邏輯或……一真則真,兩假才假
四·條件運算
一般形式
運算式1?運算式2:運算式3 例 X=a<b?a:b
運算式1必須是bool型別,運算式23可以不同,條件運算式的最終型別為2和3中較高的型別
條件運算子優先級高于賦值運算子,低于邏輯運算子。
算術運算與賦值運算:
一·基本算術運算子
+ -*/ 整數相除 結果取整
% 取余 操作為整數
二·復合賦值運算子
a+=3 相當于 a=a+3
a*=b+8 相當于 a=a*(b+8)
a%=3 相當于 a=a%3
優先級與結和性
先乘除,后加減,同級自左向右
++,--(自增,自減)
前置,后置
三·賦值運算
賦值運算子“=”
賦值運算式a=3表示將常量3賦值給變數a
賦值轉換
(1)將浮點型資料(單雙都包括)賦值給整型變數時,舍棄小數部分。如i為整型變數,執行“i=3.56”的結果是使i的值為3,在記憶體中以整數形式存盤。
(2)將整形資料賦給浮點型變數時,數值不變,但以指數形式存盤到變數中。
(3)將一個double型資料賦給float變數時要注意數值范圍不能溢位。
(4)字符型資料賦給整型變數,將字符的ASCII碼賦給整型變數。
(5)將一個int,short,long型資料賦給一個char變數,只將其低8位原封不動地送到char型變數(發生截斷)。
(6)將有符號型(signed)資料賦給長度相同的無符號型(unsigned)變數,將存盤單元內容原樣照搬。
逗號運算子
賦值運算子優先級別高于逗號運算子
Sizeof運算子
1.語法形式
sizeof(型別名) 或 sizof運算式
2.結果值:
"型別名"所制定的型別,或“運算式”的結果型別所占位元組數
位運算————按位與(&)
3.位運算
運算規則(與)
將兩個運算量的每一位進行邏輯與的操作
3:0 0 0 0 0 0 1 1
5:0 0 0 0 0 1 0 1
3&5: 0 0 0 0 0 0 0 1
用途:將某一位置0其他位不變
取出指定位
4.運算規則(或)
將兩個運算量的每一位進行邏輯或的操作
3:0 0 0 0 0 0 1 1
5:0 0 0 0 0 1 0 1
3&5: 0 0 0 0 0 1 1 1
用途:將某些位置1,其他位不變
5.運算規則(按位異或)
兩個運算元進行異或:
若對應位相同,則結果為0
若對應位不同,則結果位1
3:0 0 0 0 0 0 1 1
5:0 0 0 0 0 1 0 1
3&5: 0 0 0 0 0 1 1 0
用途:使特定位翻轉(與0異或保持原值,與1異或取反)
運算規則(按位取反)
0變1 1變0 直接變
左移運算(<<)
左移后,低位補0,高位舍棄
右移運算()
右移后:低位舍棄,高位:無符號數則補0,有符號數則補“符號數”
字串 向量 陣列
1·命名空間的using宣告
使用 using 宣告后,就無須再通過專門的前綴去獲取所需的名字了。using 宣告具有如下的形式:using namespace::name。
例:#include <iostream>
// using 宣告,當使用名字cin時,從命名空間std中獲取它
// 或者使用spacename,就不用單獨呼叫具體的宣告了
// using namespace std;
int main()
{
int i;
cin >> i; // ok:cin和std::cin含義相同
cout << i; // error:沒有對應的using宣告,必須使用完整的名字
std::cout << i; // ok:顯式地從std中使用cout
return 0 ;
}
程式中使用的每個名字都需要用獨立的 using宣告引入,或者需要引入 spacename。
頭檔案中通常不應該包含 using 宣告。這是因為頭檔案的內容會拷貝到所有參考它的檔案巾去,如果頭檔案里有某個 using 宣告,那么每個使用了該頭檔案的檔案就都會有這個宣告。對于某些程式來說, 由于不經意間包含了一些名字, 反而可能產生始料未及的名字沖突。
2、標準庫型別string
標準庫型別 string 表示可變長的字符序列,定義在頭檔案 string 中。
1)定義和初始化string物件
如果 使用等號 初始化一個變數,實際上執行的是 拷貝初始化(copy initialization),編譯器把等號右側的初始值拷貝到新創建的物件中去。如果 不使用等號,則執行的是 直接初始化(direct initialization)。
string s5 = "hiya"; // 拷貝初始化 string s6("hiya") ; // 直接初始化 string s7(10, 'c'); // 直接初始化,s7的內容是cccccccccc
2)string物件上的操作
在執行讀取操作時,string 物件會自動忽略開頭的空白(空格符、換行符、制表符等)并從第一個真正的字符開始讀取,直到遇見下一處空白為止。
注意:_Hello_World_,輸入的時候有三個空格(這里用三個下劃線標注出來),分別在前面、中間和后面,但是輸出的時候沒有任何空格。
當設定多個輸入或者輸出時,可以連寫在一起。
當希望能在輸出的字串中保留輸入的空白字符時,可以使用 getline 函式,getline 函式可以讀取一整行字符。該函式只要遇到換行符就結束讀取并回傳結果(換行符也被讀進來了),然后把所讀內容存入到 string 物件中(不保存換行符)。如果輸入的開始就是一個換行符,則得到空 string。
觸發 getline 函式回傳的那個換行符實際上被丟棄掉了,得到的 string 物件中并不包含該換行符。
ernpty 函式根據 string 物件是有為空返問一個對應的布林值;size 函式回傳 string物件的長度(即 string 物件中字符的個數),回傳值其實是 string::size_type 型別,這是一種無符號型別。要使用 size_type,必須先指定它是由哪種型別定義的。
如果一個運算式中已經有了 size 函式就不要再使用 int 了,這樣可以避免混用 int 和 unsigned int 可能帶來的問題。
當把 string 物件和字符字面值及字串字面值混合在一條陳述句中使用時,必須確保每個加法運算子兩側的運算物件中至少有一個是 string。
為了與C兼容,C++語言中的字串字面值并不是標準庫 string 的物件。 切記,字串字面值與 string 是不同的型別。
3)處理string物件中的字符
建議使用C++版本的C標準庫頭檔案。C語言中名稱為 name.h 的頭檔案,在C++中則被命名為 cname。
C++11提供了范圍 for(range for)陳述句,可以遍歷給定序列中的每個元素并執行某種操作。
其中,expression 部分是一個物件,用于表示一個序列。declaration 部分負責定義一個變數,該變數被用于訪問序列中的基礎元素。每次迭代,declaration 部分的變數都會被初始化為 expression 部分的下一個元素值。
如果想在范圍 for 陳述句中改變 string 物件中字符的值,必須把回圈變數定義成參考型別。
下標運算子接收的輸入引數是 string::size_type 型別的值,表示要訪問字符的位置,回傳值是該位置上字符的參考。
string 物件的下標必須從0記起,范圍是0至 size - 1,左閉右開。使用超出范圍的下標將引發不可預知的后果。
C++標準并不要求標準庫檢測下標是否合法。編程時可以把下標的型別定義為相應的 size_type,這是一種無符號數,可以確保下標不會小于0,此時代碼只需要保證下標小于 size 的值就可以了。另一種確保下標合法的有效手段就是使用范圍 for 陳述句。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/25822.html
標籤:基礎類
下一篇:C++基礎
