के रूप में अन्य उत्तर समझा दिया है, बुनियादी जवाब यह है कि किसी भी अभिव्यक्ति है कि 0 का मूल्यांकन सी या C++ एक 'असत्य' शर्त के रूप में व्याख्या हो जाता है, और जब s
सूचक की अशक्त समाप्ति चरित्र तक पहुँच जाता है *s
0 मूल्यांकन करेंगे स्ट्रिंग ('\ 0')।
आप *s != 0
अभिव्यक्ति का समतुल्य रूप से उपयोग कर सकते हैं, और कुछ डेवलपर तर्क दे सकते हैं कि इसका उपयोग किया जाना चाहिए, यह राय देकर कि 'पूर्ण' अभिव्यक्ति अधिक स्पष्ट है। चाहे आप उस राय से सहमत हों या नहीं, आपको terse विकल्प के उपयोग को समझने में सक्षम होना चाहिए, क्योंकि इसका उपयोग आमतौर पर सी/सी ++ कोड में किया जाता है। आप इन अभिव्यक्तियों में बहुत कुछ आ जाएंगे, भले ही आप अधिक स्पष्ट तुलना का उपयोग करना पसंद करते हैं।
मानक से अधिक कठोर स्पष्टीकरण (किसी कारण से मैं इसे चर्चा में लाने के लिए मजबूर महसूस करता हूं, भले ही यह वास्तव में कुछ भी नहीं बदलता या स्पष्ट नहीं करता है। असल में, यह शायद कुछ लोगों के लिए अनावश्यक रूप से चीजों को हल करेगा - यदि आपको इस स्तर की सामान्य स्तर पर पहुंचने की परवाह नहीं है, तो आपको अभी बैक बटन पर क्लिक करके बिल्कुल कुछ भी याद नहीं होगा ...):
सी में, *s
अभिव्यक्ति मानक कॉल 'अभिव्यक्ति में है -2 'for
कथन का, और यह विशेष for
कथन उदाहरण for
कथन की मानक परिभाषा का लाभ उठा रहा है। for
बयान किसी भी यात्रा के बयान के शब्दों के बीच एक 'यात्रा बयान' के रूप में वर्गीकृत किया गया है, और (6.8.5/4 "पुनरावृत्ति बयान") कर रहे हैं:
एक यात्रा बयान एक बयान के पाश शरीर कहा जाता है का कारण बनता है बार-बार निष्पादित किया जब तक नियंत्रित अभिव्यक्ति 0.
के बराबर तुलना 'अभिव्यक्ति -2' for
बयान का हिस्सा के बाद से नियंत्रित अभिव्यक्ति है, इसका मतलब है कि for
पाश बार-बार निष्पादित करेंगे जब तक *s
के बराबर तुलना 0।
सी ++ मानक चीजों को थोड़ा अलग तरीके से परिभाषित करता है (लेकिन उसी परिणाम के साथ)। सी ++ में, for
बयान while
बयान के संदर्भ में परिभाषित किया गया है, और while
बयान की हालत हिस्सा यात्रा (6.5.1/1 ", जबकि बयान") को नियंत्रित करता है:
का मूल्य तक हालत false
सी ++ मानक में इससे पहले हो जाता है, निम्नलिखित वर्णन करता है कि भाव bool
(4.12 "बूलियन रूपांतरण") में बदल रही हैं:
अंकगणित, गणना, सूचक, या सदस्य प्रकार के सूचक के एक रावलु प्रकार के बूल के एक रैल्यू में परिवर्तित किया जा सकता है। शून्य मान, शून्य सूचक मान, या शून्य सदस्य सूचक मान को गलत में परिवर्तित किया जाता है; कोई अन्य मूल्य सही
मानक में समान शब्द (दोनों भाषाओं में) सभी चयन या पुनरावृत्ति विवरणों की नियंत्रण अभिव्यक्ति/स्थिति पर लागू होता है। यह सारी भाषा-लॉयरेसी इस तथ्य को उबालती है कि यदि अभिव्यक्ति 0 का मूल्यांकन करती है तो यह झूठी मूल्यांकन के समान है (शब्द की अंग्रेजी भावना में, क्योंकि सी में अंतर्निहित false
कीवर्ड नहीं है)।
और यह सरल अवधारणा का लंबा, भ्रमित स्पष्टीकरण है।
एक हैशिंग एल्गोरिदम की तरह दिखता है। –