【发布时间】:2013-08-07 13:48:16
【问题描述】:
我目前正在尝试在业余时间学习一些 C 语言。我在 Java 方面有一些经验,因此我习惯于用花括号限制变量的范围。但我有点困惑,因为看起来 Brian W. Kernighan/Dennis M. Ritchie 的书“The C Programming Language”没有使用很多花括号,我认为使用它们是正常的(来自Java 视角)。例如。 1.6 书中代码所在:
while((c = getchar())) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if() /*and so forth...*/
++nwhite;
else
++nother;
从 Java 的角度来看,我习惯于只有第一个语句会运行,因为缺少花括号,但缩进表明一切都会运行(if、else if 和 else)。
所以我要问的是:这里会运行什么,为什么会运行? if、else if 和 else 都在 while 循环的范围内吗?是否有任何约定可以参考,我可以阅读以尝试更好地理解它?提前致谢。
【问题讨论】:
-
根据经验,您可以说,如果您有一个像
if/while这样的语句,那么紧随其后的行可以看作是语句的主体,在这种情况下,您有一个嵌套的建设 -
在这里使用大括号在 Java 中是可选的,就像在 C 中一样:一个“if”语句may have an "else" clause,它有一个附加语句,它可能是另一个“if”,所以是一个完整的“if”级联。 .. else if ... else if ... else" 是 while 循环的单一主体语句。
标签: c scope curly-braces