關於 C 四大基本準則的理解和具體體現

2021-10-10 01:39:58 字數 2316 閱讀 9637

c++ 程式語言的四個基本規則及其具體體現

對這個準則的理解:

即一串**不能有兩種解釋,只能有一種解釋。

這個是所有的程式語言需要遵循的最高準則。

在我看來,機器和人類最大的區別也是根本性的區別就是:機器不能根據不同情況作出自己的選擇。包括現在的人工只能,我認為也是在執行人的意識而不是自己作出想做的選擇。

不能說我寫了一行**後,這個**有兩個意思,然後讓機器去作出選擇去執行哪個意思,就算機器可以作出選擇,但是它所選擇的哪個是不是程式設計者想要的呢?如果不是,那麼對後面的程式會不會造成什麼影響呢。

所以,顯然,無二義性是乙個程式設計有序進行下去,執行程式設計者期望的步驟,以及達到程式設計者想要的目的的必要的條件。

當然,我認為真正的人工智慧的出現,也就是像《終結者》裡面的機械人那樣的有意識的機械人的出現,二義性是必須的,只有這樣,它才能像人類一樣思考,才能真正的智慧型化,意味著真正的物種的誕生。而且,在我看來,這個是計算機程式語言發展的乙個必須經過的乙個階段。

準則的具體體現:

(1) 運算子的優先順序與結合性。

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

結合性是為了消除相同優先順序之間的運算的二義性.

示例**:

int x = 3+45;

int x=34/(32)

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

如2e4這樣的字元既可以表示變數名,也可以表示常量:2*10^4,這就是二義性。

還有因為識別符號沒有規定乙個變數中三種字元的個數,如果支援以數字開頭而又不修改變數中每種字元的個數的規定,那麼像「123」這樣的字元也是合法的變數名,這樣一來所有的數字常量都可能看做變數,這也會造成二義性。

如果設法研究乙個既可以以數字開頭又不會造成這樣的問題的,一方面難度太大,另一方面又會讓程式設計師的記憶工作加大,很容易記不清楚,所以乾脆不能以數字開頭。

(3) 貪心規則

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

我對這個的理解就是,就像是我們打撲克牌的順子,如果下一張牌能連線上,那麼自然一塊打出,一直到不能連線。

對這個準則的理解:

因為在計算機程式設計剛出來的時候,計算機的效率比現在低的多,而用計算機就是為了代替人類工作並且高效的完成任務,所以為了提高程式設計的效率,在設計 c ++ 程式語言的時候,自然要考慮高效性,並且把高效性放在了第二最高準則,也就是在滿足計算機程式設計合理執行的之下,就考慮高效性這個也是體現了設計計算機的初衷。

但是隨著科技的發展,計算機的執行效率數量級提公升,所以高效性變得沒有之前那麼重要了。

具體體現:

1、比如,陣列下標選擇0索引而不是1索引,這樣就會減少很多減法的計算。

因為在計算機裡面,減的運算大於加法。因為減法實際上還是用加法進行計算的,比如8-2實際上運算的時候是8+(-2),計算機的減法運算中,運算的結果是需要再求一次補碼的。

2、再如,c++引入了指標、內聯函式、引用,這些使得c++更加高效。

比如,需要大量的重複進行乙個操作,比如10次、100次、1000次、1億次,如果使用函式,那麼就可以使整個編碼看起來整潔,而且會提高編寫**的速率。這能夠大大的提高效率。

3、變數申請儲存空間,系統分配的時候的規則

4、 邏輯短路

邏輯短路規則為對於表示式a&&b 當a為假時,b不會計算。

對這個準則的理解:

因為 c++ 的使用者是人類,所以在設計的時候,自然要考慮人類的使用習慣,不能說用些***的設定,比如用 「 - 」 代表加法等等,這樣會降低程式設計的效率並且很容易讓程式設計師在編寫程式的時候出錯,這樣是違背第二準則的,而且就像編譯語言一樣,因為是偏向於機器語言,人類很難懂,現在只有少部分人掌握。而像一些高階語言,被廣泛使用並且有競爭性。

具體表現:

這個方面在我們程式設計的時候覺得不彆扭就可以體現到了,再如運算規則就是復合我們日常習慣的計算方式的。

對這個準則的理解:

對於一些有關聯的,可能會相互相互影響,使得彼此有對方的一些特有的屬性。

就類似於兩個人在切磋武藝,在切磋的過程中,a可能發現b的某些武功很好,就學了過來,b發現a的某些武功很好,就學了過來,這樣a有了b的一些招式,b有了a的一些招式。

具體表現:

1、如賦值時候

int a=1;

int a(1);

是一樣的,都是把1賦給a

這個是學的函式的

end…

C 的四個基本準則及其具體體現

無二義性這個準則應該是所有語言中最重要的準則,即一門高階語言的設計,其首要考慮的問題就是如何消除二義性。而所謂的二義性簡單點來說就是在同樣的語句中,可以有不同的理解。例如 3 45這個式子中如果沒有說明前,你可以理解為先45然後再加3,也可以理解為3 4後再乘5。在沒有做出說明前,這個語句就是有二義...

C 程式語言的四個基本準則及其具體體現

二義性是任何邏輯體系的最高準則,在c 中,如果出現定義 語句 邏輯自相矛盾時,程式便無法執行,數學界的三次數學危機,本質上就是為了消除 二義性 的爭端。準則的具體體現 1 運算子的優先順序與結合性。優先順序是為了消除諸如3 4 5 的表示式,是應該被當作 3 4 5 還是3 4 5 的二義性而設定的...

C 程式設計的四個基本準則

無二義性是任何一門邏輯科學應該遵循的基本準則。數學界的三次數學危機,本質上就是為了消除 二義性 的爭端。準則的具體體現 1 運算子的優先順序和結合性 優先順序是為了消除諸如3 4 5 的表示式,是應該被當作 3 4 5還是3 4 5 的二義性而制定的規則。例如 括號的優先順序高於加減乘除 int x...