美文网首页
C++新特性之带有初始化器的if和switch语句

C++新特性之带有初始化器的if和switch语句

作者: 陈成_Adam | 来源:发表于2021-01-30 22:26 被阅读0次

不带初始化器的if语句

int foo(int arg) { // do something
  return (arg);
}
int main() {
  auto x = foo(42); // 本应限制于if块的变量,侵入了周边的作用域
  if (x > 40) {
    // do something with x
  } else {
    // do something with x
  }
  // auto x  = 3;
}

带有初始化器的if和switch语句

带有初始化器的if:

int foo(int arg) { // do something
  return (arg);
}
int main() {
  // auto x = foo(42);
  if (auto x = foo(42); x > 40) {
    // do something with x
  } else {
    // do something with x
  }
  auto x  = 3; // 名字 x 可重用
}

带有初始化器的switch语句:

switch (int i = rand() % 100; i) {
  case 1:
    // do something
  default:
    std::cout << "i = " << i << std::endl;
    break;
}

为何要使用带有初始化器的if语句

The variable, which ought to be limited in if block, leaks into the surrounding scope (本应限制于if块的变量,侵入了周边的作用域)

The compiler can better optimize the code if it knows explicitly the scope of the variable is only in one if block (若编译器确知变量作用域限于if块,则可更好地优化代码)

相关文章

  • C++新特性之带有初始化器的if和switch语句

    不带初始化器的if语句 带有初始化器的if和switch语句 带有初始化器的if: 带有初始化器的switch语句...

  • java基础第四天

    1.switch分支语句的直通特性: //switch分支语句如果case代码块中不加break的话,有直通的特性...

  • JS中switch的奇葩特性

    大多数语言的 switch 语句的语法和特性都是一样的,但是 JavaScript 语言中的 switch 语句有...

  • Golang学习摘录二:控制语句

    if语句 if 和 switch 接受初始化语句,通常用于设置一个(局部)变量。 goto语句 用 goto 跳转...

  • golang学习笔记(四)流程控制

    1、if (1)条件语句没有()(2)支持1个初始化语句 2、switch (1)switch后边没有()(2)默...

  • (第五章)语句(Statement)

    本章介绍几种典型的C++语句,分别是: 空语句 条件语句(if、switch) 迭代语句(while、do-whi...

  • ★05.语句

    条件语句 if语句 switch语句 与 C/C++ 的区别,case后面可以跟随任何表达式。 匹配操作用的是==...

  • JavaDay02

    流程控制语句 if else BMI计算器设计 switch case的穿透性 在switch语句中, 如果cas...

  • 10月19日C#学习总结

    今天学习了选择语句、循环语句、跳转语句 选择语句:if、else语句和switch语句,switch语句也称为开关...

  • JavaScript 填坑专集

    条件语句之switch-case-break switch语句中的case比较是严格相等运算(===),而不是普通...

网友评论

      本文标题:C++新特性之带有初始化器的if和switch语句

      本文链接:https://www.haomeiwen.com/subject/ouxltltx.html