在 C 中,在“if”语句的条件表达式中声明变量一直是一个长期存在的问题局限性。从 C 17 开始,此限制已被取消。
以前,在“if”条件中声明的变量的作用域为“if”语句的子语句。禁止将声明括在括号中,每个条件只允许有一个声明。在需要在条件内初始化变量的情况下,此限制很不方便。
考虑代码片段:
bool a = false, b = true; if (bool x = a || b) // Cannot declare x within the condition { }
要在“if”范围内将 x 初始化为 false,需要使用括号由于运算符优先级。但是,不允许使用括号,要求 x 在“if”之外声明。这将声明泄露到了更广泛的范围。
在 C 17 中,这个约束已经放宽。以下代码现在有效:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
注意“;”的使用将声明与条件分开。这允许多重声明并在适当的情况下使用括号。
因此,以前不符合要求的内容现在通过 C 17 的引入而成为可能。
以上是C 17 可以在'if”条件内声明变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!