कई मामलों में, हमें किसी फ़ंक्शन द्वारा लौटाए गए किसी चीज़ के मूल्य को सत्यापित करने और इस मान के आधार पर सशर्त संचालन करने की आवश्यकता होती है। तो हमारा कोड नीचे दिया गया है -
// 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 ब्लॉक इस प्रकार दिया गया है -
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 (auto var1 = foo(); condition) { ... } else{ ... } // Another if-else block if (auto var1 = bar(); condition) { .... } else { .... }
इसी तरह के मामले में स्विच केस ब्लॉक को संशोधित या अद्यतन किया गया है। अब हम स्विच कोष्ठक के अंदर एक प्रारंभिक व्यंजक रख सकते हैं।
प्रारंभिक विवरण के बाद हमें यह निर्दिष्ट करने की आवश्यकता है कि मामलों की जांच के लिए कौन सा चर लागू किया जा रहा है
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; } }