V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hoythan
V2EX  ›  C

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

  •  
  •   hoythan · 2018-07-04 16:05:30 +08:00 · 2432 次点击
    这是一个创建于 2114 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到别人的代码中

    while(xxx)
    {
    	{
        	xxxx
        }
    }
    

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

    xiongjia
        1
    xiongjia  
       2018-07-04 16:13:39 +08:00   ❤️ 1
    C++ 中增加一个 Block Scope 可以用来控制变量或对象的范围: https://en.cppreference.com/w/cpp/language/scope

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

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

    不过,在 while{的起始处是可以定义变量的,如果在前 2 个“{”之间没有语句,那么感觉中间的{}是没有意义的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3717 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:40 · PVG 12:40 · LAX 21:40 · JFK 00:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.