在 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;
   }
}

更新於:2020-01-29

196 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.