gpt4 book ai didi

c - 大括号和作用域在 C 中如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:31 25 4
gpt4 key购买 nike

我目前正尝试在业余时间学习一些 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 循环的范围内?是否有任何约定可以引用,我可以阅读以更好地理解它?提前致谢。

最佳答案

whileifelse ifelse 后跟单个语句。此语句可以是实际的 C 行,也可以是 block 语句(用大括号括起来)。 ifelse ifelse 被视为一个 block 。

所以使用大括号,这将是等价的:

while((c = getchar())) != EOF) {
if (c >= '0' && c <= '9') {
++ndigit[c-'0'];
}
else if() { /*and so forth...*/
++nwhite;
}
else {
++nother;
}
}

关于c - 大括号和作用域在 C 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com