無二義性是指c++在執行程式時,對於同一條語句,只有一種執行方式,不存在第二種執行方式,語句歧義會導致計算機執行錯誤。
具體體現在如下方面:
1、運算子的優先順序和結合性
優先順序:運算子的優先順序決定了運算子用於值的順序,例如:
int x=1+
2*3;
cout << x << endl;
//根據優先順序,會先計算2*3,再計算1+6,x輸出結果為7。
結合性:為消除諸如x=y=z是應先執行y=z還是x=y的二義性而制定的規則,例如:
int x,y=
2,z=3;
int x=y=z;
cout << x << endl;
//根據結合性,x輸出結果為3。
2、識別符號不能以數字開頭
當識別符號以數字開頭時,無法知道這個識別符號是乙個變數還是常量,會引起歧義,違背了無二義性,例如:
int x=
2e2;
倘若識別符號可以以數字開頭,我們就無法知道2e2指的是乙個變數還是數字2×102,違背了無二義性。
3、貪心原則
每個符號應該包含盡可能多的字元,計算機在從左到右依次讀取字元時,如果已經讀取的字元能構成乙個字元,將讀取下乙個字元,然後判斷它與前一組字元能否組成乙個字元,如果可以組成乙個字元則重複此部,如果不能則將此字元作為第乙個字元進行依次往後讀取。例如:
int i=
1,j=2;
int x=i++
+j;
其中的i+++j可以理解為(i++) +j。
c++出現時計算機的效率較低,因此高效性作為c++的第二高準則。
1、資料組下標0索引。
以0作為下標相比於1可以減少減法運算,可以提公升效率。
//0為索引時
&a[i]
=&a[0]
+ i*
sizeof
(a[0])
;//1為索引時
&a[i]
=&a[1]
+(i-1)
*sizeof
(a[1])
;
2、邏輯短路
主要應用於諸如a&&b類的運算,當判斷a為否時計算機將不再進行b的運算,以此來提高計算機的效率。
int i=
1,j=1;
intif
( i>
2&& i++);
j++;cout << i << endl;
cout << j << endl;
//因為 i>2 不成立,所以計算機不再執行 i++ ,因此i的輸出結果仍為1。
1、內建函式命名
嵌入到主調函式中的函式稱為內建函式,又稱內嵌函式。 作用是提高程式的執行效率,大多程式語言都有自己的內建函式,在c++中的內建函式有數學函式、隨機函式等。 其命名由其英文表達,方便程式設計師記憶與使用。
2、語序
c++與我們閱讀的方向相同,從左向右,由上至下,乙個字元乙個字元地閱讀,符合我們的日常習慣。
括號初始化體現了變數與物件之間的「相似相同規則」,列表初始化體現了變數與陣列之間的「相似相同規則」。
int i =5;
std::cout << i <<
"\n"
;intj(
5); std::cout << j <<
"\n"
;int k = i;
std::cout << k <<
"\n"
;int
l(i)
; std::cout << l <<
"\n"
;int m
; std::cout << m <<
"\n"
;int n =
; std::cout << n <<
"\n"
;
C 程式語言的基本準則
二 第二高準則 高效性 1.陣列下標0索引 2 邏輯短路 3 微調控制能力 4 編譯自主性 1.內建函式命名 2.二維陣列下標表示總行數和總列數 3.運算的優先順序 二義性是指乙個c 語句所表達的含義含有兩種或多種含義。這對於計算機執行計算而言時需要消除的。具體無二義性體現在一下幾點 優先順序 運算...
C 程式語言的四種基本準則
簡述 這個準則不僅僅是c 的準則,也是所有程式語言的最高準則,更是任何邏輯體系的最高準則。因為機器不像人,人的一句話在不同的語境可能還會有不同理解,但機器對一種語言的理解有且只有那麼一種 理解 方式,若是一句程式語言出現兩種意思,計算機無法選擇,最終出現錯誤。具體表現 1.運算子的優先順序與結合性 ...
C 程式語言的四個基本準則
二 次高準則 高效性 三 第三準則 合乎日常習慣 四 補充準則 相似相同規則 五 結語 對這個準則的理解 程式語言於計算機而言,通俗地說就是指令,若乙個指令出現歧義,計算機則會無法判斷該執行哪一種。倘若執行了其中一種,則可能與本來所需要的結果相悖,不符合實際需求。所以,程式語言的無二義性,可以使得我...