जब आपके पास निम्न जैसा स्टेटमेंट होता है:
while (expression);
तो व्हाइल लूप चलेगा चाहे एक्सप्रेशन सच हो या नहीं। हालांकि, यदि आप लिखते हैं:
if (expression);
तो स्टेटमेंट चलेगा चाहे एक्सप्रेशन सच हो या नहीं। ऐसा इसलिए है क्योंकि if और while का सिंटैक्स है:
if (<expr>) <statement> // या while (<expr>) <statement>
इसलिए <statement> केवल तभी निष्पादित होता है जब <expr> सच हो। व्हाइल में, यह अनंत लूप में प्रवेश करेगा।
तो सवाल यह है कि यह कौन सा <statement> निष्पादित करता है। यदि ब्रेसेस {} नहीं हैं तो अगला स्टेटमेंट ; द्वारा समाप्त होता है भले ही वह स्टेटमेंट खाली हो। ध्यान दें कि एक खाली स्टेटमेंट वैध है।
if (<expr>) /* खाली स्टेटमेंट */; while (<expr>) /* खाली स्टेटमेंट */;
दोनों मामलों में, कुछ भी निष्पादित नहीं होता (एक्सप्रेशन मूल्यांकन के बाद)। हालांकि व्हाइल अनंत लूप में प्रवेश कर सकता है। नोट: '{}' एक स्टेटमेंट-ब्लॉक है (एक प्रकार का स्टेटमेंट जिसमें अन्य स्टेटमेंट्स की सूची होती है)।