看到别人的代码中
while(xxx)
{
{
xxxx
}
}
这是某种特定要求的写法吗?
1
xiongjia 2018-07-04 16:13:39 +08:00 1
|
2
inoki 2018-07-04 17:50:32 +08:00 1
控制内部新声明变量生命周期和作用范围
比如 while (xxx) { { int i=0; i++; // OK } i=4; // Undefined identifier } |
3
bp0 2018-07-04 21:26:31 +08:00 1
其实是 C89 中只准许在作用域的开始处声明变量。所以如果想在函数中间中间定义变量,只能加大括号。当然副作用是从大括号出来以后变量就不能用了。就像#2 说的那样。
C99 以后可以随便定义了,不过为了兼容 C89 的编译器,所以大部分代码还是会使用大括号。 不过,在 while{的起始处是可以定义变量的,如果在前 2 个“{”之间没有语句,那么感觉中间的{}是没有意义的。 |