कई मामलों में, हमें किसी फ़ंक्शन द्वारा लौटाए गए मान को सत्यापित करने और इस मान के आधार पर सशर्त ऑपरेशन करने की आवश्यकता होती है। तो हमारा कोड नीचे दिया गया है -
// कोई मेथड या फ़ंक्शन return_type foo(Params) // Params के साथ फ़ंक्शन कॉल करें और // var1 में रिटर्न स्टोर करें auto var1 = foo(Params); if (var1 == /* कुछ मान */) { //कुछ करें } else { //कुछ और करें }सभी सशर्त if-else ब्लॉक्स में सामान्य प्रारूप का पालन करें। सबसे पहले एक वैकल्पिक प्रारंभिक कथन होता है जो वेरिएबल सेट करता है, उसके बाद if-else ब्लॉक होता है। तो सामान्य if-else ब्लॉक निम्नानुसार दिया गया है -
init-statement if (condition) { // कुछ करें } else { // कुछ और करें }C++17 में init स्टेटमेंट को इनिशियलाइज़र कहा जाता है, और हम इसे सीधे if-else ब्लॉक में निम्न तरीके से रख सकते हैं
if (init-statement; condition) { // कुछ करें } else { // कुछ और करें }कंडीशन्ड वेरिएबल का स्कोप वर्तमान if-else ब्लॉक तक सीमित हो जाता है। यह हमें उसी नाम के पहचानकर्ता को दूसरे सशर्त ब्लॉक में पुनः उपयोग करने की अनुमति भी देता है।
if (auto var1 = foo(); condition) { ... } else{ ... } // दूसरा if-else ब्लॉक if (auto var1 = bar(); condition) { .... } else { .... }इसी तरह स्विच केस ब्लॉक को संशोधित या अद्यतन किया गया है। अब हम स्विच पैरेंथेसिस के अंदर एक प्रारंभिक अभिव्यक्ति रख सकते हैं।
प्रारंभिक कथन के बाद हमें यह निर्दिष्ट करना होगा कि केस की जांच के लिए किस वेरिएबल का उपयोग किया जा रहा है
switch (initial-statement; variable) { .... // केस }एक पूर्ण प्रोग्राम
// C++17 में पेश की गई init if-else फीचर को समझाने/प्रदर्शित करने का प्रोग्राम #include <iostream> #include <cstdlib> using namespace std; int main() { // बाद में प्रोग्राम में उपयोग किए जाने वाले rand फ़ंक्शन को सेट/फिक्स करें srand(time(NULL)); // C++17 से पहले int I = 2; if ( I % 2 == 0) cout << I << " is even number" << endl; // C++17 के बाद // if(init-statement; condition) if (int I = 4; I % 2 == 0 ) cout<< I << " is even number" << endl; // स्विच स्टेटमेंट // switch(init;variable) switch (int I = rand() % 100; I) { default: cout<< "I = " << I << endl; break; } }