分号在C和Pascal中的区别

yanlb2000

在C语言和Pascal语言中,都会大量使用分号";"。比如,几乎每个语句结束之后,都有个分号。

很多人认为,分号是语句的结束符,每个语句都必须以分号来结束,C语言和Pascal语言中都是如此。

比如,记得几年前看到《电脑报》有一篇介绍Pascal入门的文章,就说,每个语句必须用分号结束。

但这种认识其实是不对的,C和Pascal对分号在语句分隔方面有不同的定义。

C语言规定,分号是语句的结束符。因此,每个语句必须以分号结束。

而Pascal语言规定,分号是语句的分隔符。这就不同了,按此定义,只有在语句之间,才需要用分号分隔。而如果仅仅是一条语句,或者是最后一条语句,那么就没必要用分号了。事实就是如此。

比如,这样的代码是完全正确的。

procedure

TForm1.FormCreate(Sender: TObject);

begin

label1.Caption := 'Hello world.';

label1.Font.Color := clRed

end;

相反,如果在clRed后面加一个分号,严格说反而是画蛇添足的。

理论上说,任何一个begin...end语句块之间,最后一个语句都没有必要加分号。

但是,如果加上一个分号又如何呢?一点问题都没有。

按照Pascal语法,分号是语句分隔符,所以,如果分号后面没有语句,那其实隐含了是一个空语句,在语法上当然还是允许的。而从实践上来说,任何一个Pascal语法编译器都会忽略这种"多余的"分号,将其优化掉,不作处理,也不会报错。

我写这些的目的,只是提醒大家,分号的区别。特别是,Pascal语言中分号是语句的分隔符而不是结束符,最后一个语句是不必加分号的。

当然,在实际编程中,完全不必拘泥于这种区别。你喜欢怎么用就怎么用,只要知道理论上有这些区别就可以了。

比如说我,写Pascal代码的时候,最后一个语句基本上都是加分号的。原因么:

1,

每个语句结束都加个分号,习惯了。C语言中如此,Pascal中大部分语句还是如此,写多了,成为习惯是很自然的。

2, 编译器会将多余的分号忽略,不会造成任何开销或效率上的损失。

3,

为了以后在原有语句后面再添加点语句的方便。如果原来没有最后的那个分号,添加语句的时候又不注意,编译的时候就会出错,少了个分隔符。虽然马上能查出来,但毕竟多了点步骤,耽误些时间。还不如当初就每个语句都加分号,包括最后一个语句。

所以,我对分号的态度是,知道理论上的定义和不同,就可以了。实际使用中不必太拘泥,按各人喜好,实用为上。

分号是c语言的结束符不是分隔符,分号在C和Pascal中的区别相关推荐

  1. 所有c语言语句最后必须有一个分号,C 语言学习笔记

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 一.简介 注释的两种方式:1. 以//开始的单行注释:2. 以/*开始,以*/结束的块式注释 scanf("% ...

  2. c语言字符串结束符的作用

    想要精通一门语言需要反复学习和思考,每一次学习都会有不同的体会.初学c语言的会后会有很多懵逼的地方,当有一定的c基础的时候,在学一遍c语言又会有很多新的体会,发现很多细节,同时还会拓展出好些疑问. 之 ...

  3. python语句结束符_python 为什么不用分号作终止符?

    一般而言,编程语言中使用分号";"来实现两种目的: 作为语句分隔符:使用分号来分隔语句(statement),这样就能在一行代码中书写多条语句(一行多句) 作为语句终止符:使用分号 ...

  4. js return加分号_javascript每条语句该不该加分号(javascript分号详解)

    javascript的分号代表语句的结束符,但由于javascript具有分号自动插入规则,所以它是一个十分容易让人模糊的东西,在一般情况下,一个换行就会产生一个分号,但实际情况却不然,也就是说在ja ...

  5. R语言ggplot2可视化分面图、在分面图中的每个直方图中添加均值文本标签、添加均值红色竖线

    R语言ggplot2可视化分面图.在分面图中的每个直方图中添加均值文本标签.添加均值红色竖线 目录

  6. R语言ggplot2可视化:可视化堆叠的直方图、在bin中的每个分组部分添加数值标签、使用position_stack函数设置

    R语言ggplot2可视化:可视化堆叠的直方图.在bin中的每个分组部分添加数值标签.使用position_stack函数设置 目录

  7. R语言ggplot2可视化:可视化箱图、在箱图中添加抖动数据点(Dot + Box Plot)、自定义抖动数据点的大小、颜色、数据点分布在箱图中间、添加主标题、副标题、题注信息

    R语言ggplot2可视化:可视化箱图.在箱图中添加抖动数据点(Dot + Box Plot).自定义抖动数据点的大小.颜色.数据点分布在箱图中间.添加主标题.副标题.题注信息 目录

  8. R语言可视化散点图(scatter plot)图、为图中的部分数据点添加标签、ggrepel包来帮忙

    R语言可视化散点图(scatter plot)图.为图中的部分数据点添加标签.ggrepel包来帮忙 目录

  9. R语言可视化散点图(scatter plot)、并在散点图中叠加回归曲线、叠加lowess拟合曲线(linear and lowess fit lines)、使用plot、line、abline函数

    R语言可视化散点图(scatter plot).并在散点图中叠加回归曲线.叠加lowess拟合曲线(linear and lowess fit lines).使用plot函数.line函数和ablin ...

最新文章

  1. 计算机电缆线对成缆系数,计算机电缆绞合系数 - 无图版
  2. Repeater 嵌套 Repeater
  3. 断言(assert)和程序的安全保证
  4. websocket 携带请求头_WebSocket与Nginx的小秘密
  5. 邓总的vim配置,需要的自己拿走~
  6. vcsa上RVC查看vsan状态的命令
  7. php 设置post大小_post 数据大小的限制问题
  8. 对话清华NLP实验室刘知远:NLP搞事情少不了知识库与图神经网络
  9. SQLServer2005 中 XML类型方法中 XQuery中变量的参数化--匆忙整理
  10. 基于openpose的人体姿态识别部署详细过程
  11. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十四:SD卡模块
  12. ENVI大气校正后遥感图像颜色变了及编辑头文件
  13. 人类最美的24张数学画(图)
  14. XML解析——Java中XML的四种解析方式
  15. Windows7旗舰版SP1_32位2018.10(办公版)
  16. nuc7 android tv,第七代的进化,Intel NUC7i3BNH 开箱评测拆解
  17. 计算机自动关机启机唤醒设置,电脑设置自动关机和自动开机
  18. 学生平价蓝牙耳机推荐,适合学生党的好音质平价蓝牙耳机
  19. 微信小程序超出内容换行
  20. flex布局设置宽度不生效,高度生效

热门文章

  1. 110.无限叠卡特效
  2. c++实现双链表基本操作详解
  3. 关于计算机的英语笑话,双语笑话 假如生活是一台电脑
  4. python 读取.nii格式图像
  5. ubuntu下载python3_Ubuntu安装Python3
  6. 三种256MB SPIFLASH的高性能模式和软复位学习笔记
  7. false函数matlab,ISNUMBER函数使用表达式说明表 matlab拟合函数表达式
  8. java正则驼峰_javascript 驼峰算法
  9. Linux搭建Socks v5正向代理服务器
  10. 关于python manage.py migrate报错的解决方法