N
तत्वों को देखते हुए, केवल पहले (0) और अंतिम (एन -1) तत्व को संसाधित करें।पहले और अंतिम तत्व पर लूप केवल
लेकिन, यदि N = 1
, केवल एक बार एक तत्व को संसाधित करें।
एक लूप का उपयोग करना जो एक या दो बार चलता है, उचित रूप से, हमें लूप बॉडी को डुप्लिकेट करने से बचने देता है। यदि ऐसा करने के लिए एक पठनीय तरीका है, तो इसका स्रोत-कोड आकार का लाभ होता है। यदि लूप बॉडी बड़ा है, तो इसमें मशीन-कोड आकार के फायदे भी हो सकते हैं, और संकलक इसे डुप्लिकेट नहीं कर सकता है।
मैं N-1
से incrementing कोशिश की, लेकिन यह काम नहीं करेगा जब N=1
(हमेशा के लिए लूप)। क्या वहां चालें हैं (रिवर्स लूप एफ.आई) जो इसे ठीक करेगी?
for (i = 0 ; i < N ; i += (N - 1))
संपादित करें:
मेरे मूल समस्या एक्स, वाई, जेड दिशा में तीन नेस्टेड छोरों से संबंधित है, जिसके कारण मैं कर सकता न सिर्फ प्रक्रिया ELEM [0]) और ELEM [एन 1]। अब मैं निम्नलिखित
#define forEachLglBound(i_,j_,k_) \
for(Int i_ = 0;i_ < NPX;i_+=((NPX>1) ? (NPX-1) : 1)) \
for(Int j_ = 0;j_ < NPY;j_+=((NPY>1) ? (NPY-1) : 1)) \
for(Int k_ = 0;k_ < NPZ;k_+=((NPZ>1) ? (NPZ-1) : 1))
आपको लगातार दो तत्वों के लिए लूप की आवश्यकता क्यों है? – kaylum
यदि आप केवल पहले और अंतिम तत्व –
तक पहुंचना चाहते हैं तो आपको लूप की आवश्यकता क्यों होगी? काम करने के लिए बस एक फ़ंक्शन लिखें और इसे 'सरणी [0]' और 'सरणी [एन -1]' के साथ कॉल करें। इरादा बहुत स्पष्ट होगा। – clcto