मैं हमेशा इस्तेमाल किया सी में स्थिर से परिभाषित सरणियों से अधिक पुनरावृत्ति के लिए प्रतिमान निम्नलिखित गया है में गिनती:सरणी तत्व सी
struct foo { ... };
struct foo array[10];
for (int i; i < sizeof(array)/sizeof(array[0]); i++)
...
और, ठीक है, यह हर बार काम किया अब तक ;-)
लेकिन यह, आश्चर्य बनाता है यह अगर struct लंबाई है कि स्वाभाविक रूप से संरेखित नहीं करता है, जैसे की वास्तव में था नहीं तोड़ सकता है:
struct foo { long a; char b; };
नहीं संकलक का निर्णय लेते हैं कि sizeof(struct foo) == 7
जबकिसंरेखण (एलपी 64 डेटा मॉडल) के कारण?
यदि मेरी धारणा सच थी या काउंटर-उदाहरण है तो मेरी कैप्चर हमेशा नहीं होती है, तो मैं एक कैननिकल संदर्भ की तलाश में हूं। –
बीटीडब्ल्यू एक पूर्णांक विभाजन है, यह आपको गलत संख्या नहीं दे सका। क्या मै गलत हु? – LPs
"कंपाइलर यह तय नहीं करेगा कि 'sizeof (struct foo) == 7'_" जरूरी नहीं है, पैडिंग हो सकती है। – emlai