【发布时间】:2011-01-04 22:02:12
【问题描述】:
这听起来很愚蠢,但多年来我一直无法想出一个需要这个的用例。快速的谷歌搜索没有发现任何有价值的东西。
根据记忆,Bjarne Stroustrup 提到了一个用例,但我找不到对它的引用。
那么为什么你不能在 C 语言中使用它:
int val = 0;
if val
doSomehing();
else
doSomehinglse();
我可以接受“我们不会为增加对词法分析器的支持而烦恼”的理由,我只是想弄清楚这种语法是否会破坏其他语言结构。考虑到 C/C++ 中有多少古怪的语法特性,我几乎不认为这会增加很多复杂性。
【问题讨论】:
-
因为语言是这样定义的?
-
我认为它可能会成为一堆嵌套 if / else 块的问题。
-
好问题。而cx0der:为什么是这样定义的?许多语言允许您省略括号。在 C 语言家族中是否存在实际上将歧义引入解析器的情况?我想不出来。
-
@cx0der:许多编译语言确实允许这样做。解释与编译与它无关。问题在于语言的语法,而不是代码的执行方式它已被解析
-
其他一些语言使用'then'来标记条件的结束;关键字就像括号一样。 Dennis Ritchie 选择不使用关键字将条件与动作分开,而是选择使用括号。有些语言有关键字来介绍所有语句;这样的语言不需要括号,因为关键字再次标记下一条语句的开始,因此条件和动作的分离是明确的。
标签: c# java javascript c++ c