c 第二次課堂筆記

2021-10-09 22:49:07 字數 1613 閱讀 9847

理解:

在類與類的繼承時,當基類成員與派生類成員同名時,或派生類從多個擁有共同基類的基類中派生時,將會產生二義性。

無二性的體現:

1.運算子的優先順序與結合性

優先順序是為了消除h諸如3+4*5的表示式,是應被當作(3+4)5還是3 + (45)的二義性而設定的規則。

結合性指同一優先順序的運算子在表示式中操作的組織方向。

即: 當乙個運算物件兩側運算子的優先級別相同時, 運算物件與運算子的結合順序, c 語言規定了各種運算子的結合方向( 結合性) 。

大多數運算子結合方向是「自左至右」, 即: 先左後右, 例如a- b+c, b 兩側有- 和+兩種運算子的優先順序相同, 按先左後右結合方向, b 先與減號結合, 執行a- b 的運算, 再執行加c 的運算。

除了自左至右的結合性外, c 語言有三類運算子參與運算的結合方向是從右至左。即: 單目運算子, 條件運算子, 以及賦值運算子。關於結合性的概念在其他高階語言中是沒有的, 這是c語言的特點之一。

【右結合舉例】

=號為例:

a=b=c

先計算等號右側的,等價於:

a=(b=c)

【*++p,++*p,p++】

運算子優先順序:

後自增》(解引用)

*(解引用) = 前自增

++p:

(解引用) = 前自增 考慮結合性,是右結合,所以相當於(++p);

++*p

(解引用) = 前自增 考慮結合性,是右結合,所以相當於++(p);

p++後自增》(解引用) 不考慮結合性。相當於(p++);

2.識別符號不能以數字開頭

理解:如果允許變數名以數字開頭,分析器每讀取下乙個字元的時候需要回溯來確定是否是數字、變數名還是詞法錯誤(#等),直到符號出現非數字再轉成變數名,很顯然這是一種極大的浪費。而且如果當變數名全為數字時,這時候分析器就不知道是數字還是變數名了。

例如:3a是非法變數名。

3.貪心規則

每個符號應該包含盡可能多的字元,也就是說,我們的編譯器將程式分解成符號的方法是,從左到右乙個乙個字元的讀入,如果該字元可能組成乙個符號,那麼再讀入下乙個字元,然後在判斷已經讀入的兩個字元是否有可能是乙個符號或者乙個符號的組成部分,如果可能則繼續讀入下乙個字元,然後重複整個過程,直到讀入的字元組成的字串已不再可能組成有意義的符號,這就是貪心法。貪心演算法符號的中間不能嵌有空格。

理解:大概就是盡可能把字元組成單詞或它有用符號?應用於string。

1.陣列下標以0索引開始

理解:①當陣列下標0索引開始時

第i 個元素的位置=首位址+ sizeof(a)

②當陣列下標以1索引開始時

第1個元素位置=首位址+ (i-l) sizeof (a)

②比①多了一次減法運算,計算機減法運算採用補碼,計算量很大。所以為了更加高效,陣列下標以0索引開始。

2.邏輯短路

遇到邏輯短路時,計算機會直接跳過。

3.計算機語言符合日常用語,方便程式設計師編寫**。

理解:c++中,如果有兩個不同的物件a與b,a有行為a,b有行為b,如果a與b兩種行為在邏輯.上具有相似性,則c++ 會為物件a額外增加乙個行為b,也會將物件b額外增加乙個行為a。

舉例:

第二次課堂筆記

第二次課堂筆記 順序表的屬性 1 儲存空間的起始位置 2 順序表的容量 3 順序表的當前長度 順序錶類的宣告 const int maxsize 100 template class seqlist public seqlist seqlist datatype a,int n seqlist in...

C 第二次課堂實驗

一 問題及 檔名稱 aa c cpp 作 者 馬昭宇 完成日期 2016 年 3 月 24 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 輸入體重身高判斷超重,正常還是超輕 程式輸出 超重 超輕 正常 問題分析 略 演算法設計 無 includeusing names...

第二次筆記

一 學習內容總結 1 迴圈結構型別 1 當型迴圈結構,表示當條件p成立 為真 時,反覆執行a操作,直到條件p不成立 為假 時結束迴圈。2 直到型迴圈結構,表示先執行a操作,再判斷條件p是否成立 為真 若條件p成立 為真 則反覆執行a操作直到條件p不成立 為假 時結束迴圈。2 c語言提供for,whi...