|
|
1
29
在很多情况下需要分号。 如果你有:
这将被解析为
因此,如果没有分号,它是不明确的。 |
|
|
2
55
它是 非常 很好,C++编译器不这么做。其中一个 最差的 javascript的各个方面是分号插入。想象一下:
C++编译器将愉快地继续在下一行中,正如一个预期的那样,“插入”分号(如JavaScript)的语言会把它当作“返回”,而忽略“(A+B)”。 不要依赖于编译器错误修复,而要养成使用分号的习惯。 |
|
|
3
8
首先,这只是一个小例子;您确定编译器能够智能地告诉您对于更复杂的代码有什么问题吗?为了 任何 一段代码?所有编译器都能以同样的方式智能地识别这一点,这样就可以保证一块C++代码有丢失的分号吗? 第二,C++是十多年前创建的,那时计算资源并不像现在这样。即使在今天,构建也需要相当长的时间。分号有助于清楚地划分不同的命令(对于用户和编译器!)并帮助程序员和编译器理解正在发生的事情。 |
|
|
4
4
|
|
|
5
3
使用分号(或换行符,选择一个)可以使编译器简单得多,错误消息更易读。 但与其他人所说的相反,两种形式的定界符(作为 绝对的 )是绝对必要的。 例如,假设haskell也没有。即使是当前版本的vb也允许在语句中的许多地方换行,就像python一样。这两种方法都不需要在许多地方进行线路延续。 例如,vb现在允许使用以下代码:
没有语句分隔符,没有行继续符,但是没有任何含糊不清的地方。
从理论上讲,这可能会进一步推动。
所有
通过引入一些规则,可以消除歧义(同样,看看haskell)。但同样,这使得解析器更加复杂(它必须在很多地方对上下文敏感,例如
|
|
|
6
2
在C程序中,分号是语句终止符,而不是分隔符。你可能想读 this fun article . |
|
|
7
0
+给你们两个。 分号是命令行分隔符,与VB、Python等C和C++不同,在代码行中忽略空格,包括回车符!这最初是因为C计算机监视器的启动只能处理80个字符的字符,而C++是基于C规范的。 我可以提出这样一个问题:“当我尝试在几行代码上写代码时,为什么我必须不断地得到关于vb中缺少字符的错误,当然如果vb知道这个问题,它可以插入它?” 正如已经指出的那样,自动插入可能是一场噩梦,特别是在包装到第二行的代码上。 |
|
8
0
我不会扩展对分号和换行符的需求,两者都有优点和缺点,最后它是一个简单的语言设计选择(即使它影响到所有用户)。 我更担心编译器的建议 修理 代码。
如果你曾经见过一个神奇的工具(比如…嗯,我们来接一个
至于 警告 ?任何一个值得注意的程序员都知道警告应该被视为错误(编译停止了),那么有什么好处呢? |
|
|
9
0
我认为一般的问题是,如果没有分号,就不知道程序员实际上可能是什么意思(例如,第二行可能是
您可能还注意到,您经常会得到“预期分号”,其中真正的问题不是缺少分号,而是完全不同的内容。想象一下一个格式错误的表达式,编译器可以通过静默地执行和插入分号来理解它。 分号似乎是多余的,但对于程序员来说,这是确认“是的,这是我的意图”的简单方法。 另外,警告而不是编译器错误太弱。人们编译代码时会关闭警告,忽略收到的警告,而afaik标准从未规定编译器必须警告什么。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |