首页 > 后端开发 > C++ > C `if` 语句可以在其条件内声明变量吗?

C `if` 语句可以在其条件内声明变量吗?

Barbara Streisand
发布: 2024-11-27 19:57:13
原创
682 人浏览过

Can C   `if` Statements Declare Variables Within Their Conditions?

C 中“if”表达式内的变量声明

在 C 中,能够在“if”语句的条件下声明变量已成为限制的主题。编译器(包括 Visual Studio 2008)经常遇到括在括号中的变量声明或单个条件中的多个声明的困难。

根据 2003 C 标准第 6.4.3 节,选择语句中声明的变量具有作用域延伸到由条件控制的子语句的末尾。但是,该标准没有明确解决括号或多个声明的使用。

例如,以下代码无法编译:

if((int a = Func1()))
{
    // Fails to compile.
}
登录后复制

即使只需要一个声明的情况,这种限制可能会令人沮丧。请考虑以下内容:

bool a = false, b = true;

if(bool x = a || b)
{

}
登录后复制

要在“if”主体范围内将“x”设置为“false”,声明需要括号。但是,条件内不允许使用括号,从而强制在体外声明“x”并将其泄漏到更广泛的范围。

从 C 17 开始,这些限制已得到解决。现在可以使用以下代码:

if (int a = Func1(), b = Func2(); a &&& b)
{
    // Do stuff with a and b.
}
登录后复制

使用 ';'代替“,”将声明与条件分开,解决了之前的限制。

以上是C `if` 语句可以在其条件内声明变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板