यह पूर्णांक मानों को बूलियन के रूप में उपयोग करने के इतिहास से आता है।
यदि xकोई है int, लेकिन मैं इसे एक बूलियन के रूप में उपयोग कर रहा हूं if(x)...तो वेतन वृद्धि का मतलब यह होगा कि ऑपरेशन से पहले इसका सत्य मूल्य जो भी हो, इसके trueबाद इसका सत्य-मूल्य होगा (अतिप्रवाह को छोड़कर)।
हालाँकि, --केवल दिए गए ज्ञान के सत्य मूल्य के परिणाम की भविष्यवाणी करना असंभव है x, क्योंकि इसमें परिणाम हो सकता है false(यदि अभिन्न मूल्य 1 है) या true(यदि अभिन्न मूल्य कुछ और है - विशेष रूप से इसमें 0 [ false] और 2 शामिल हैं) अधिक [ true])।
तो एक शॉर्ट-हैंड के रूप में ++काम किया, और --नहीं किया।
++ इसके साथ संगतता के लिए बूल पर अनुमति दी जाती है, लेकिन इसका उपयोग मानक में पदावनत है।
यह मानता है कि मैं केवलx एक बूलियन के रूप में उपयोग करता हूं , जिसका अर्थ है कि अतिप्रवाह तब तक नहीं हो सकता है जब तक कि मैंने ++अक्सर ऐसा नहीं किया है क्योंकि यह स्वयं पर अतिप्रवाह का कारण बनता है। यहां तक कि चार के रूप में इस्तेमाल किया गया है और CHAR_BITS5 की तरह कुछ कम है, जो कि 32 बार है इससे पहले कि यह किसी भी अधिक काम नहीं करता है (यह अभी भी एक बुरा अभ्यास होने के लिए पर्याप्त तर्क है, मैं अभ्यास का बचाव नहीं कर रहा हूं, बस यह समझाता हूं कि यह क्यों काम करता है) 32-बिट के लिए intहम निश्चित रूप से ++2 ^ 32 बार उपयोग करना होगा इससे पहले कि यह एक मुद्दा है। साथ --ही यह केवल में परिणाम होगा falseअगर मैं के लिए 1 का मान के साथ शुरू किया true, या 0 के साथ शुरू किया और इस्तेमाल ++ठीक पहले एक बार।
यह भिन्न है अगर हम एक मान से शुरू करते हैं जो सिर्फ कुछ नीचे है। वास्तव में, ऐसे मामले में हम अंततः मूल्य ++में परिणाम करना चाहते हैं falseजैसे:
int x = -5;
while(++x)
doSomething(x);
हालांकि, यह उदाहरण सशर्त को छोड़कर हर जगह के xरूप में व्यवहार करता है int, इसलिए यह इसके बराबर है:
int x = -5;
while(++x != 0)
doSomething(x);
जो केवल xबूलियन के रूप में उपयोग करने के लिए अलग है ।