स्विच स्टेटमेंट तुरंत मेमोरी में सही स्थान पर कैसे जाता है? नेस्टेड अगर-स्टेटमेंट के साथ, इसे प्रत्येक के साथ तुलना करना पड़ता है, लेकिन स्विच स्टेटमेंट के साथ यह सीधे सही मामले में जाता है। यह कैसे लागू किया जाता है?कैसे स्विच स्टेटमेंट काम करता है
उत्तर
मशीन कोड में switch
कथन को संकलित करने के कई अलग-अलग तरीके हैं। यहाँ कुछ कर रहे हैं:
संकलक परीक्षण की एक श्रृंखला है, जो इतनी ही के बारे में लॉग (एन) परीक्षण के बीच एन संभव एक मूल्य के प्रेषण के लिए पर्याप्त हैं के रूप में अक्षम नहीं है उत्पादन कर सकते हैं मामलों।
कंपाइलर मूल्यों की एक तालिका का उत्पादन कर सकता है और पते को कूद सकता है, जो बदले में जेनेरिक लुकअप कोड (रैखिक या डिकोटॉमिक,
bsearch()
के समान) द्वारा उपयोग किया जाएगा और अंत में इसी स्थान पर कूद जाएगा।यदि केस मान पर्याप्त घने होते हैं, तो संकलक कूद पते और कोड की एक तालिका उत्पन्न कर सकता है जो जांचता है कि स्विच मान सभी केस मानों को शामिल करने वाली सीमा के भीतर है और सीधे संबंधित पते पर कूदता है। यह शायद आपके विवरण के निकटतम कार्यान्वयन है: लेकिन स्विच स्टेटमेंट के साथ यह सीधे सही मामले पर जाता है।
लक्ष्य सीपीयू, संकलक सेटिंग्स के विशिष्ट क्षमताओं पर निर्भर करता है, और संख्या और मामले मानों का वितरण, संकलक ऊपर तरीकों में से एक या एक और, या उनमें से एक संयोजन, या यहाँ तक कि कुछ का उपयोग कर सकते अन्य तरीकों।
कंपाइलर डिजाइनर इन विकल्पों के लिए हेरिस्टिक को बेहतर बनाने की कोशिश में काफी प्रयास करते हैं। असेंबली आउटपुट को देखें या विभिन्न कोड पीढ़ी की संभावनाओं को देखने के लिए Godbolt's Compiler Explorer जैसे ऑनलाइन टूल का उपयोग करें।
- 1. स्विच स्टेटमेंट कैसे काम करता है?
- 2. स्विच स्टेटमेंट
- 3. स्विच स्टेटमेंट
- 4. स्विच स्टेटमेंट
- 5. स्विच स्टेटमेंट
- 6. स्विच स्टेटमेंट
- 7. स्विच स्टेटमेंट
- 8. स्विच स्टेटमेंट
- 9. स्विच स्टेटमेंट
- 10. स्विच स्टेटमेंट
- 11. स्विच स्टेटमेंट
- 12. जावास्क्रिप्ट स्विच स्टेटमेंट
- 13. gcov और स्विच स्टेटमेंट
- 14. एक अन्य स्विच स्टेटमेंट के अंदर PHP स्विच स्टेटमेंट
- 15. स्विच स्टेटमेंट में regexp
- 16. मैं एक स्विच स्टेटमेंट
- 17. रिएक्टर लंबे स्विच स्टेटमेंट
- 18. जावा स्विच स्टेटमेंट + =/- = ऑपरेटर
- 19. बुलियन के साथ स्विच स्टेटमेंट काम नहीं कर रहा है?
- 20. केस/स्विच स्टेटमेंट
- 21. जावा स्विच स्टेटमेंट
- 22. स्विच/केस स्टेटमेंट
- 23. एकाधिक तर्क स्विच स्टेटमेंट
- 24. सी # स्विच स्टेटमेंट ब्रेक
- 25. जावास्क्रिप्ट सशर्त स्विच स्टेटमेंट
- 26. Google स्प्रेडशीट स्विच स्टेटमेंट
- 27. जावा में स्विच स्टेटमेंट
- 28. गो में, स्विच/चयन से ब्रेक स्टेटमेंट ब्रेक करता है?
- 29. कॉफ़ीस्क्रिप्ट: अप्रत्याशित तब स्विच स्टेटमेंट
- 30. लंबे स्विच स्टेटमेंट से कैसे बचें? सी ++
आपका संकलक शायद एक झंडा आप विधानसभा कोड यह उत्पन्न ... बिगाड़ने को दिखाने के लिए है: अक्सर कई बार यह का एक समूह के रूप में ही के बारे में है, तो-s –
आपको क्या लगता है यह करता है? और 'if' नहीं करता है? कृपया एक संदर्भ प्रदान करें जहां मानक आपके दावे का समर्थन करता है। – Olaf
@ डेविड कॉनॉली: क्या आप उत्तर स्वीकार कर सकते हैं? – chqrlie