यह col
के मूल्य में कोई फर्क नहीं पड़ता है - मानते हैं कि col
एक आदिम मूल्य है। यदि col
एक वर्ग था, तो उपसर्ग और पोस्टफिक्स '++' ऑपरेटरों को दो अलग-अलग चीजों को करने के लिए ओवरलोड किया जा सकता है, हालांकि मैं इसे खराब अभ्यास मानता हूं। निम्न उदाहरण पर विचार करें:
#include <iostream>
using namespace std;
int main() {
for(int i = 0; i < 10; i++) {
cout << i << endl;
}
cout << endl;
for(int i = 0; i < 10; ++i) {
cout << i << endl;
}
}
इनमें से
दोनों बस, 0 से 9 से प्रिंट तथ्य यह है कि आप पहले से वेतन वृद्धि एक में, और अन्य में के बाद वेतन वृद्धि के बावजूद। i
की वृद्धि लूप के प्रत्येक भाग के अंत में होती है चाहे आप प्री या पोस्ट वृद्धि का उपयोग करें या नहीं। मेरा मानना है कि प्री-इंक्रिमेंटिंग अधिक कुशल है, क्योंकि - और मैं यहां गलत हो सकता हूं - कंपाइलर को अस्थायी चर 1. का उपयोग करने की आवश्यकता नहीं है, लेकिन यह केवल ध्यान देने योग्य होगा यदि आप बहुत लंबे समय तक लूपिंग कर रहे हैं (और निश्चित रूप 'More computing sins are committed in the name of efficiency than for any other single reason')
प्रश्न 2 के लिए के रूप में की।
प्रश्न 2: का उपयोग कर सकते हैं >> = 1 यू बजाय =/2 कोई फर्क?
असंभव। यदि कंपेलर ऑप्टिमाइज़ नहीं किया गया है तो बिट स्थानांतरण तेजी से होगा, लेकिन संभावना है कि आपका कंपाइलर इसे थोड़ा बदलाव में अनुकूलित करेगा।
एक तरफ ध्यान दें के रूप में, मैं आम तौर पर unsigned variableName
कर (जो है, int
छोड़ने) को खोजने के खराब व्यवहार का - हालांकि सी ++ एक int
कहीं भी एक में धक्का देना होगा याद आ रही है, यह कम मेरे लिए पठनीय है।
1.: टिप्पणी में स्टीफन (एक अलग स्टीफन;)) लिखते हैं कि - "पूर्व वेतन वृद्धि मानक पुस्तकालय कंटेनर iterators के लिए और अधिक कुशल है, लेकिन यह आदिम प्रकार के लिए अलग नहीं है, एक पूर्णांक को कॉपी के बाद से एक बड़ा इटरेटर (विशेष रूप से std :: set और std :: map iterators) की प्रतिलिपि बनाने से सस्ता है। "
अगर मुझे सही याद है, इस मामले में इससे कोई फर्क नहीं पड़ता है। चर को 'आर-वैल्यू' के रूप में उपयोग करते समय यह एक फर्क पड़ता है: 'a = b ++;' या 'a = ++ b;' –
उस प्रश्न के उत्तर अधिकतर गलत हैं, ग्रेग। वे उत्तर देते हैं कि कौन सी पोस्ट और पूर्व वृद्धि हुई है, ** नहीं ** वे एक लूप में कैसे काम करते हैं - वास्तव में उनमें से कई भ्रामक हैं कि वे लागू करते हैं कि इससे कोई फर्क पड़ता है क्योंकि वे अपने लूप के लिए एक भ्रामक वाक्यविन्यास का उपयोग करते हैं ('int i = 0; foreach (यादृच्छिक OtherThing में यादृच्छिक OtherThings) '...) – Stephen
ठीक है। दूसरे प्रश्न के बारे में क्या? – Ahmed