在 C++17 中带有初始化程序 Else 和 Switch 语句
在很多情况下,我们需要验证函数返回的值,并根据该值执行条件操作。因此,我们的代码如下所示 -
// Some method or function return_type foo(Params) // Call function with Params and // store return in var1 auto var1 = foo(Params); if (var1 == /* some value */) { //Perform Something } else { //Perform Something else }
只需在所有条件 if-else 块中遵循一般格式。首先,存在一个可选的初始语句,它设置变量,然后是 if-else 块。因此,一般 if-else 块如下 -
init-statement if (condition) { // Perform or Do Something } else { // Perform or Do Something else }
在 C++17 中,init 语句被称为初始化程序,我们可以直接将其保留在 if-else 块中,如下所示
if (init-statement; condition) { // Perform Something } else { // Perform Something else }
条件变量的范围被限制在当前 if-else 块中。这也允许我们在另一个条件块中重复使用相同的命名标识符。
if (auto var1 = foo(); condition) { ... } else{ ... } // Another if-else block if (auto var1 = bar(); condition) { .... } else { .... }
在类似的情况下,switch case 块已被修改或更新。我们现在可以在 switch 括号中保留一个初始表达式。
在初始语句后,我们需要指定正在实施哪个变量来检查情况
switch (initial-statement; variable) { .... // cases }
一个完整的程序
// Program to explain or demonstrate init if-else // feature introduced in C++17 #include <iostream> #include <cstdlib> using namespace std; int main() { // Fix or set up rand function to be implemented // later in program srand(time(NULL)); // Before C++17 int I = 2; if ( I % 2 == 0) cout << I << " is even number" << endl; // After C++17 // if(init-statement; condition) if (int I = 4; I % 2 == 0 ) cout<< I << " is even number" << endl; // Switch statement // switch(init;variable) switch (int I = rand() % 100; I) { default: cout<< "I = " << I << endl; break; } }
广告