C 语言 while 中 两个花括号有什么特别意义吗?

2018-07-04 16:05:30 +08:00
 hoythan

看到别人的代码中

while(xxx)
{
	{
    	xxxx
    }
}

这是某种特定要求的写法吗?

2506 次点击
所在节点    C
3 条回复
xiongjia
2018-07-04 16:13:39 +08:00
C++ 中增加一个 Block Scope 可以用来控制变量或对象的范围: https://en.cppreference.com/w/cpp/language/scope

C 里应该类似吧。
inoki
2018-07-04 17:50:32 +08:00
控制内部新声明变量生命周期和作用范围
比如
while (xxx)
{
{
int i=0;
i++; // OK
}
i=4; // Undefined identifier
}
bp0
2018-07-04 21:26:31 +08:00
其实是 C89 中只准许在作用域的开始处声明变量。所以如果想在函数中间中间定义变量,只能加大括号。当然副作用是从大括号出来以后变量就不能用了。就像#2 说的那样。

C99 以后可以随便定义了,不过为了兼容 C89 的编译器,所以大部分代码还是会使用大括号。

不过,在 while{的起始处是可以定义变量的,如果在前 2 个“{”之间没有语句,那么感觉中间的{}是没有意义的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/468101

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX