c - C中孤花括号代码块的含义

我遇到了一些代码,其中包含几个代码块,用花括号 {} 描述。在代码块之前没有一行将它们标记为 if 语句、函数定义或其他任何内容的一部分。只是一个漂浮在函数中间的代码块。这有什么意义吗? gcc 似乎很高兴通过代码;我只能想象这是一种允许原始编码人员在视觉上分割功能 block 的方法......

最佳答案

它创建了一个范围。 block 内是否定义了自动变量?如果是这样,那么这些变量的范围仅限于 block 。它对于您不想污染函数其余部分的临时变量很有用,并且在编写 C89 时也很有用,其中变量定义必须位于 block 的开头。

所以,而不是:

int main() {
    int a = 0;
    int b;
    int i;

    for (i = 1; i < 10; ++i) {
        a += i;
    }

    b = a * a;
    // do something with a and b
}

你可以:

int main() {
    int a = 0;
    {
        int i;
        for (i = 1; i < 10; ++i) {
            a += i;
        }
    }

    {
        int b = a * a;
        // do something with a and b
    }
}

显然,如果您这样做,您还必须问自己,这些 block 作为单独的函数是否会更好。

https://stackoverflow.com/questions/3636576/

相关文章:

Python - 轻松将文本文件内容转换为字典值/键

arrays - Bash 数组 : appending and prepending to eac

Java - 土耳其语或其他月份的日期格式

javascript - 使用 jQuery 在输入框中显示一个小数点后 2 位的值,同时保持更高的

java - 意外的 java SimpleDateFormat 解析异常

jsp - 如何将变量设置为小数点后 2 位

haskell - 新线 haskell

c# - 格式化难读的 try..catch..finally block ?

c# - 格式化 C# 输出

mysql - 这是什么时间格式? (不是 UNIX,不是 UTC,什么都没有)