इसका मतलब sizeof
के सभी अन्य उपयोगों के समान है। यह अभिव्यक्ति के आकार की गणना करता है।
इस विशेष मामले में, मुझे संदेह है कि चेक t
(जो कि एक प्रकार का नाम होना चाहिए, एक चर नहीं होना चाहिए) को सुनिश्चित करने के लिए है, जिसे मैं संदर्भ से नहीं जानता ... शायद यह संभव है इसे एक सूचक के रूप में इलाज करने के लिए (सरणी अनुक्रमण के लिए आवश्यक) जो कुछ प्रकार से बाहर निकल जाएगा। मैक्रो के बगल में टिप्पणी /* provoke compile error for invalid uses of size argument */
कहती है जो इस सिद्धांत का समर्थन करती है।
ध्यान दें कि sizeof
एक ऑपरेटर है, फ़ंक्शन नहीं। कोष्ठक की आवश्यकता नहीं है, सिवाय इसके कि जब आप सीधे किसी प्रकार के आकार की गणना करना चाहते हैं, और फिर वे अभिव्यक्ति का हिस्सा हैं (यह एक कास्ट अभिव्यक्ति है)। तो यह स्पष्टता के लिए sizeof t == sizeof t[1] && ...
, या शायद (sizeof t == sizeof t[1])
लिखा जा सकता है।
यह उपयोग करने के लिए एक बहुत अच्छी शैली है, क्योंकि यह t
के प्रकार को दोहराने के बजाय आकार को "सरणी" उचित सरणी में गणना की जा रही है। इसलिए, यदि प्रकार बदलना था, तो अभिव्यक्ति स्वचालित रूप से अनुकूलित हो जाएगी और अभी भी सही चीज़ की गणना करेगी।
कई सी प्रोग्रामर किसी कारण से सभी मामलों में sizeof
पर तर्क के चारों ओर कोष्ठक रखने पसंद करते हैं।
"यदि' t' एक सरणी चर, 'sizeof (टी) == है sizeof (टी [1])' झूठे हो जाएगा "कि वास्तव में हमेशा सही है? –
@AndreasGrapentin: एक तत्व की सरणी के लिए नहीं, लेकिन फिर आपको सीमाओं से सरणी को अनुक्रमणित करने के लिए एक कंपाइलर चेतावनी मिल सकती है। – interjay