सी ++ 17 मौजूदा अगर स्टेटमेंट के सिंटैक्स को बढ़ा दिया है। अब if स्टेटमेंट के भीतर ही प्रारंभिक स्थिति प्रदान करना संभव है। इस नए सिंटैक्स को "इफ स्टेटमेंट विद इनिशियलाइज़र" कहा जाता है। यह एन्हांसमेंट सामान्य कोड पैटर्न को सरल करता है और उपयोगकर्ताओं को दायरे को तंग रखने में मदद करता है। जो बदले में वेरिएबल लीक को दायरे से बाहर होने से बचाती है।
उदाहरण
मान लीजिए कि हम यह जांचना चाहते हैं कि दी गई संख्या सम है या विषम। C++17 से पहले हमारा कोड इस तरह दिखता था -
#include <iostream> #include <cstdlib> using namespace std; int main() { srand(time(NULL)); int random_num = rand(); if (random_num % 2 == 0) { cout << random_num << " is an even number\n"; } else { cout << random_num << " is an odd number\n"; } return 0; }
आउटपुट
जब आप उपरोक्त कोड को संकलित और निष्पादित करते हैं तो यह कुछ इस तरह से आउटपुट उत्पन्न करेगा -
1555814729 is an odd number
ऊपर के उदाहरण में, हम देख सकते हैं कि वेरिएबल "random_num" if-else स्कोप के बाहर लीक हो गया है। हम इसे नए "इफ स्टेटमेंट विद इनिशियलाइज़र" सिंटैक्स के साथ आसानी से टाल सकते हैं।
नीचे "इफ स्टेटमेंट विद इनिशियलाइज़र" का सिंटैक्स दिया गया है -
if (init; condition) { // Do stuff when Boolean condition is true } else { // Do stuff when Boolean condition is false }
उदाहरण
आइए अब इस नए if स्टेटमेंट का उपयोग करके इनिशियलाइज़र के साथ समान कोड लिखें -
#include <iostream> #include <cstdlib> using namespace std; int main() { srand(time(NULL)); // C++17 if statement with initializer if (int random_num = rand(); random_num % 2 == 0) { cout << random_num << " is an even number\n"; } else { cout << random_num << " is an odd number\n"; } return 0; }
उपरोक्त उदाहरण में, चर "random_num" का दायरा if-else ब्लॉक तक सीमित है। इसलिए इस वेरिएबल को इस ब्लॉक के बाहर एक्सेस नहीं किया जा सकेगा। हैरानी की बात है कि यह वास्तविक आउटपुट को प्रभावित किए बिना वैरिएबल स्कोप को टाइट रखता है।
आउटपुट
जब आप उपरोक्त कोड को संकलित और निष्पादित करते हैं तो यह कुछ इस तरह से आउटपुट उत्पन्न करेगा -
943513352 is an even number
नोट - जैसा कि हम यादृच्छिक संख्या उत्पन्न कर रहे हैं हर बार एक ही मशीन पर भी प्रत्येक रन के लिए आउटपुट अलग-अलग होगा।