यह पूर्णांक मानों को बूलियन के रूप में उपयोग करने के इतिहास से आता है।
यदि x
कोई है int
, लेकिन मैं इसे एक बूलियन के रूप में उपयोग कर रहा हूं if(x)...
तो वेतन वृद्धि का मतलब यह होगा कि ऑपरेशन से पहले इसका सत्य मूल्य जो भी हो, इसके true
बाद इसका सत्य-मूल्य होगा (अतिप्रवाह को छोड़कर)।
हालाँकि, --
केवल दिए गए ज्ञान के सत्य मूल्य के परिणाम की भविष्यवाणी करना असंभव है x
, क्योंकि इसमें परिणाम हो सकता है false
(यदि अभिन्न मूल्य 1 है) या true
(यदि अभिन्न मूल्य कुछ और है - विशेष रूप से इसमें 0 [ false
] और 2 शामिल हैं) अधिक [ true
])।
तो एक शॉर्ट-हैंड के रूप में ++
काम किया, और --
नहीं किया।
++
इसके साथ संगतता के लिए बूल पर अनुमति दी जाती है, लेकिन इसका उपयोग मानक में पदावनत है।
यह मानता है कि मैं केवलx
एक बूलियन के रूप में उपयोग करता हूं , जिसका अर्थ है कि अतिप्रवाह तब तक नहीं हो सकता है जब तक कि मैंने ++
अक्सर ऐसा नहीं किया है क्योंकि यह स्वयं पर अतिप्रवाह का कारण बनता है। यहां तक कि चार के रूप में इस्तेमाल किया गया है और CHAR_BITS
5 की तरह कुछ कम है, जो कि 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
बूलियन के रूप में उपयोग करने के लिए अलग है ।