2016-02-16 13 views
8

मैंने मानक खोजा है लेकिन उल्लेख किए गए हिस्से को नोटिस नहीं किया है।! 0 C89 में 1 होने की गारंटी है?

क्या यह सिर्फ "कुछ भी 0" और 1 है या यह संकलक-निर्भर है?

+3

निर्मित ऑपरेटरों कि उपज तार्किक बूलियन परिणाम ('<', '>', '<=', '> =', '' ==, '! =', '' &&, '' ||, '!') हमेशा वास्तव में उपज '0' या' 1' टाइप प्रकार 'int'। कुछ लाइब्रेरी फ़ंक्शंस, जैसे 'isdigit() ', गलत के लिए' 0' वापसी या सत्य के लिए किसी भी गैर-शून्य मान। –

उत्तर

23

तार्किक निषेध ऑपरेटर ! का परिणाम 0 अगर इसकी संकार्य के मूल्य में 0, 1 करने के लिए असमान तुलना अगर इसकी संकार्य के मूल्य में 0. के बराबर तुलना परिणाम टाइप int है।

सी 8 9/सी 0 9, सी 99, और सी 11 में दिखाई देता है।

+2

क्या आप इस लिंक में जोड़ सकते हैं जहां आपको यह मिला? – AustinWBryan

+1

http://port70.net/~nsz/c/c89/c89-draft.html#3.3.3.3 –

+0

बहुत बहुत धन्यवाद! – susdu

4

जैसे ही हॉब्स ने अपने उत्तर में कहा, section 6.5.3.3.5 of the C standard बताता है कि !01 का मूल्यांकन करता है।

इसके अतिरिक्त, यह व्यवहार !!x अभिव्यक्ति के साथ एक बूलियन मान (यानी 0 या 1) के पूर्णांक को सामान्य करने के लिए उपयोग किया जा सकता है।

  • जब x = 0, !!x = !!0 = !1 = 0
  • जब x! = 0, !x = 0, तो !!x = !0 = 1
संबंधित मुद्दे