分号是c语言的结束符不是分隔符,分号在C和Pascal中的区别
分號(hào)在C和Pascal中的區(qū)別
yanlb2000
在C語言和Pascal語言中,都會(huì)大量使用分號(hào)";"。比如,幾乎每個(gè)語句結(jié)束之后,都有個(gè)分號(hào)。
很多人認(rèn)為,分號(hào)是語句的結(jié)束符,每個(gè)語句都必須以分號(hào)來結(jié)束,C語言和Pascal語言中都是如此。
比如,記得幾年前看到《電腦報(bào)》有一篇介紹Pascal入門的文章,就說,每個(gè)語句必須用分號(hào)結(jié)束。
但這種認(rèn)識(shí)其實(shí)是不對(duì)的,C和Pascal對(duì)分號(hào)在語句分隔方面有不同的定義。
C語言規(guī)定,分號(hào)是語句的結(jié)束符。因此,每個(gè)語句必須以分號(hào)結(jié)束。
而Pascal語言規(guī)定,分號(hào)是語句的分隔符。這就不同了,按此定義,只有在語句之間,才需要用分號(hào)分隔。而如果僅僅是一條語句,或者是最后一條語句,那么就沒必要用分號(hào)了。事實(shí)就是如此。
比如,這樣的代碼是完全正確的。
procedure
TForm1.FormCreate(Sender: TObject);
begin
label1.Caption := 'Hello world.';
label1.Font.Color := clRed
end;
相反,如果在clRed后面加一個(gè)分號(hào),嚴(yán)格說反而是畫蛇添足的。
理論上說,任何一個(gè)begin...end語句塊之間,最后一個(gè)語句都沒有必要加分號(hào)。
但是,如果加上一個(gè)分號(hào)又如何呢?一點(diǎn)問題都沒有。
按照Pascal語法,分號(hào)是語句分隔符,所以,如果分號(hào)后面沒有語句,那其實(shí)隱含了是一個(gè)空語句,在語法上當(dāng)然還是允許的。而從實(shí)踐上來說,任何一個(gè)Pascal語法編譯器都會(huì)忽略這種"多余的"分號(hào),將其優(yōu)化掉,不作處理,也不會(huì)報(bào)錯(cuò)。
我寫這些的目的,只是提醒大家,分號(hào)的區(qū)別。特別是,Pascal語言中分號(hào)是語句的分隔符而不是結(jié)束符,最后一個(gè)語句是不必加分號(hào)的。
當(dāng)然,在實(shí)際編程中,完全不必拘泥于這種區(qū)別。你喜歡怎么用就怎么用,只要知道理論上有這些區(qū)別就可以了。
比如說我,寫Pascal代碼的時(shí)候,最后一個(gè)語句基本上都是加分號(hào)的。原因么:
1,
每個(gè)語句結(jié)束都加個(gè)分號(hào),習(xí)慣了。C語言中如此,Pascal中大部分語句還是如此,寫多了,成為習(xí)慣是很自然的。
2, 編譯器會(huì)將多余的分號(hào)忽略,不會(huì)造成任何開銷或效率上的損失。
3,
為了以后在原有語句后面再添加點(diǎn)語句的方便。如果原來沒有最后的那個(gè)分號(hào),添加語句的時(shí)候又不注意,編譯的時(shí)候就會(huì)出錯(cuò),少了個(gè)分隔符。雖然馬上能查出來,但畢竟多了點(diǎn)步驟,耽誤些時(shí)間。還不如當(dāng)初就每個(gè)語句都加分號(hào),包括最后一個(gè)語句。
所以,我對(duì)分號(hào)的態(tài)度是,知道理論上的定義和不同,就可以了。實(shí)際使用中不必太拘泥,按各人喜好,實(shí)用為上。
總結(jié)
以上是生活随笔為你收集整理的分号是c语言的结束符不是分隔符,分号在C和Pascal中的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第4节:开发微信小程序之0的突破——名片
- 下一篇: 【安全归约】第一讲 | Definiti