當前位置:成語大全網 - 書法字典 - c語言和pascal語言的語法比較

c語言和pascal語言的語法比較

c和Pascal以前不壹樣,現在越來越像了。

現代C語言借鑒了許多Pascal概念:

比如老的C語言,類型檢查弱,沒有函數原型。但是今天的C/C++語言支持函數原型(而不支持

崇尚舊函數風格),類型檢查機制幾乎和Pascal壹樣嚴格。古代的C語言過去只能通過指針訪問。

綁定變量是非常不安全的,但是今天C/C++的引用參數是相當類型安全的。參考參數和Pascal的var參數壹模壹樣。

另外,Pascal本身也有了巨大的發展,Borland功不可沒。

現在人們用的Pascal幾乎都是Turbo Pascal或者Delphi的Object Pascal。沃思時代

程序名(輸入、輸出);

const a = 1;

type t = char的壓縮數組;

var i:整數;

開始

Writeln('這是壹個古董Pascal程序');

結束。

還有多少人認識?壹個軟件就是壹個程序begin end,分不出模塊,所以不要瘋了?

現代的Pascal語言也借鑒了C語言的很多概念,比如默認的參數值,不變的變量記錄:

類型

TPoint =記錄

的大小寫整數

0: ( x,y:擴展);

1:(半徑,角度:擴展);

結束;

case部分不是case type: integer of而是case integer of,實際上和C語言中的union是壹樣的。

至於引用數據類型(如smallint、longint、無類型指針、類型參數)和強制類型轉換機制,就不提了。

今天Pascal的文件處理有點像C語言,和過去有天壤之別。誰還記得老Pascal的get/put操作?

說了這麽多相似,其實是襯托了當年的不相似。語言的發展有相似之處,也有不同之處({}和begin..end)通常是

這是微不足道的

今天有壹些重要的區別:1。Pascal支持子程序嵌套,C不支持。因為C的設計目標之壹就是直接對應機器語言的結構。

2.Pascal子程序分為過程/函數,C只有函數。

3.Pascal類型比較嚴格,比如char和boolean,是特殊的枚舉類型,但是枚舉和整數不是壹回事,必須通過Ord()進行轉換。

而c的char和enum被當作整數。

4.c支持可變參數void f(int x,...),但帕斯卡沒有。

5.C/c++的模塊化機制是頭文件的文件包含+*的連接。obj文件,並且該文件包含壹個文本操作,所以編譯速度很慢。

而Pascal是unit的連接,二進制運算,編譯速度快(對於開發大型軟件還是很重要的)。

6.c語言結構/數組初始化只需要給數值,元素個數可以比定義的少;帕斯卡必須明確指出要點。

數量名稱,數量嚴格對應:

var Point: TPoint = ( x: 100,y:200);

7.c的logo是區分大小寫的,Pascal不是。

8.C編譯器預處理功能比Pascal更強大,在實踐中也很重要(彌補了C編譯器的很多不足)。

9.很容易被忽略也很重要:兩者的表達方式不同。

9.1的表達式。C/C++被賦予了太多的使命,甚至賦值語句本身就是壹個表達式,a = b同時返回a,所以

可以寫成a = b = c;帕斯卡的賦值數嚴格來說就是壹個規定的運算:賦值,沒有別的,妳不可能寫出A: = B: = C。

9.2.C/c++表達式的類型嚴格取決於源操作數:char a = 100,b = 200那麽a+b的結果

類型仍然是char,當然會溢出。Pascal會為妳擴展成足夠大的數據類型:var a,b:smallint;c:longint;答:= 32768;

b:= 32768;

c:= a+b;//結果是65536,在C語言中肯定是0。

歸根結底,C接近機器,骨子裏把操作數當成“二進制”(這有時候是優勢,尤其是處理硬件的時候);帕斯卡接近數學,試圖從數學的角度看待數值。10.至於C的for循環有多強大,Pascal的for循環如何遵循規則,這些都不太重要。========================================================

我覺得最大的區別是c中不允許在函數內部定義其他函數。

但是pascal的過程函數是允許存在的。

此外,C被賦予= =帕斯卡和:=

還有就是C用{}表示範圍,但是pascal用begin end。

關於for循環c,妳可以隨意增減條件中的變量,比如

int I;

for(I = 0;我& lt100;i+=2)

{

}

但是pascal壹次只能加1(不知道這個對不對,如果和vb混合的話妳可以參考壹下)

=========================================================

它們在oop中有壹些不同。

1.pascal不支持多重繼承,只能由單個父親繼承,而c++允許多個父親。

如果妳用郭BC提供的電視來編程,妳壹定看過電視的源代碼,妳會發現它和德爾福的vcl多麽相似,但是他

畢竟是c++寫的,采用了很多多重繼承。德爾福後來改寫了她。

從oop的未來發展來看,不提倡多重繼承,java和pascal壹樣不支持這種操作,從根本上降低了類的復雜度。

異質性和可讀性。

2.pascal沒有重載和多態的概念。現在borland已經完全完善了pascal。

3.pascal還是沒有c++的朋友。他能做的就是訪問同壹個單元其他類的私有變量。當前編譯

在這個過程中,大家要盡量避免使用好友。

4.pascal的所有類都是TObject的後代,但實際上妳什麽都不寫。

AAA = class();

結束;

仍然相當於

AAA = class(to object);

結束;

這樣,所有的類指針都可以被to object轉換,而且他已經在to object中做了壹些基本的類初始化和分析。

構造函數運算符重載。這還不如c++。

5.所有的pascal都必須顯式聲明構造函數,即使妳沒有在裏面寫任何東西。而c++不能。

6.pascal所有的類都在堆中應用,統壹管理,每個類的相互操作都在堆中進行。

而c++可以存在於堆、棧、數據區,讓不同區域的類可以互相訪問,這就成了c++需要解決的壹個復雜性。

問題7。基於以上原因。

例如,類TDemo,

可以用C++寫

t demo * demo = new t demo();

TDemo演示;//直接創建實體

但是在pascal中,它必須被寫出來

demo:t demo;

演示:= TDemo。create();

8.另壹個問題是字符串。

現在可以說pascal的字符串可操作性比c++強。

他可以直接+,c++不行。主要原因是c++太接近底層操作了。

9.還是壹串

Pascal的字符串分為長字符串和短字符串,都是以string[0]開頭,實際上存儲的是字符串的長度。

度,長串是4字節,表示壹個長度為4G的字符串,短串是1字節,最大長度是255,不像c++是壹個結的意思。

捆綁。

帕斯卡有很多優點。比如想得到壹個字符串的長度,c++需要掃描整個字符串,直到遇到\0。

出大小,而pascal只是讀[0],這種效率從編譯出來的匯編代碼就能看出來。

另壹個好處是對於多字節字符串支持,比如unicode,因為是16bit,所以會有很多\0,這和

C++不得不改為\0\0表示結束,以解決字符通靈結束符號的沖突。而Pascal則不需要任何改變。10 ...還有很多,壹時想不起來了。