C 中 if 表达式中的变量声明
在 C 中,if 表达式条件中变量声明的语法通常受到限制。问题是这样的限制是基于标准的还是特定于编译器的。
2003 C 标准 (6.4.3) 允许在 if 条件内声明变量,范围扩展到受控子语句。但是,它没有明确禁止声明周围的括号或条件内的多个声明。
C 的早期版本在括号和多个声明方面的行为不一致。在提供的代码示例中:
此限制对于条件内只需要一个声明的场景来说很不方便。
C 17 解决方案
C 17 对此引入了解决方案问题:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
此语法使用分号 (;) 将声明与条件分隔开。它允许在一个条件内声明多个变量,消除了之前的不便。
以上是C 的 if 表达式可以跨标准和编译器一致地处理变量声明吗?的详细内容。更多信息请关注PHP中文网其他相关文章!