关于分号(“;”)的用法

shycpp 2003-08-20 04:14:03
在C/C++语言中凡是“语句”都要加“;”,但为什么复合语句不加“;”。函数的定义不加,而结构、类的定义加。如:
class stu{
char name[33];
int age;
};
void output()
{
……
}
如果说是规定,那么为什么要这样规定?
...全文
283 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lybapple 2003-08-23
  • 打赏
  • 举报
回复
好有见地。
davidwoo 2003-08-23
  • 打赏
  • 举报
回复
此类为题和编译器的设置有关

编译器只编译符合他要求的语句.

否则报错
maxcai 2003-08-23
  • 打赏
  • 举报
回复
是啊,与编译器有关——第一个编译器
金笛子 2003-08-23
  • 打赏
  • 举报
回复
很好细致好没错很多语法都有编译器有关我觉得有必要去看看啊
luckychange 2003-08-23
  • 打赏
  • 举报
回复
看似简单问题,其实背后有着一些深层次的道理~

这就涉及到编译原理方面的知识,加不加分号主要看编译器是否能很方便地分辨别出语句、定义之类的东东。如果每次碰到}后面跟空格或回车(空格一般都滤掉了),都认为是复合语句,那类定义怎么办,岂不报错?所以碰到}后跟;就判断为定义,这样就不会搞错了~

也可以设计编译器认为每条语句强制一行,那就没必要用;了,如BASIC……(碰到回车符认为语句结束,而不是;)
hhxu 2003-08-23
  • 打赏
  • 举报
回复
要是让编程语言统一多好,哪有这么多的语言要学???
GhostAdz 2003-08-23
  • 打赏
  • 举报
回复
规则用多了 (吐啊吐啊的~~~)就习惯了
一开始总是充满好奇的 之后才发现这些问题并不重要
madasoft 2003-08-23
  • 打赏
  • 举报
回复
你把所有的程序写在一行里,看看是不是会产生歧义,以此来决定加不加。
pzytony 2003-08-20
  • 打赏
  • 举报
回复

简单
xiaoyunet 2003-08-20
  • 打赏
  • 举报
回复
我来解释一下:
语句家;表示语句结束。
为什么类后面要价?请看

class a{}

func1()
{
}

c语言中函数的返回值没有谢默认为int。而上述的代码func1地返回值类型为a;而作者的原意是int。这种错误编译器发现不了。所以要加;这样就可以区别了。还有你可以写
class a{}b;如果没有;编译就不能通过了。

函数后面为什么不用家呢?因为不需要。
wbh0360 2003-08-20
  • 打赏
  • 举报
回复
谁知道,你去问问c++创始人

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧