दिलचस्प पोस्ट
स्कैपर को पायथन स्क्रिप्ट में से कैसे चलाएं क्या मानक C ++ में केवल विंडोज फोन 7 के लिए प्रोग्राम करना संभव है? क्या टेक्स्ट-ओवरफ्लो का उपयोग करना संभव है: बहुलेख पाठ पर एलीपिसिस? पॉलीमॉर्फिज़्म जीएसएन के साथ खंड और टुकड़ा गतिविधि के बीच का अंतर कस्टम HTTP हेडर: नामकरण सम्मेलनों सी में पूर्णांक आकार क्या पर निर्भर करता है? मैं एक स्पष्ट स्क्रिप्टबंडल को कैसे निर्दिष्ट कर सकता हूँ जिसमें आदेश शामिल है? आरडीएल रिपोर्ट पर आरडीएलसी का उपयोग कब करना है? एसक्यूएल तिथि बनाम जावा.sql.Date में समयक्षेत्र के लिए AppDelegate क्या है और मुझे यह कैसे पता चल जाएगा कि इसका उपयोग कब किया जाए? ओपनसीवी में Mat :: type () के साथ किस प्रकार का एक मॉट ऑब्जेक्ट है यह पता लगाने के लिए कैसे std :: vector को आकार घटाने के लिए? मानक आरंभक पर्वतमाला की बजाय क्यों हैं? दृश्य स्टूडियो डिबगर – Hex में पूर्णांक मान प्रदर्शित करना

!! सी ऑपरेटर, एक दो नहीं है?

मैं यह कोड पढ़ रहा हूं, और यह रेखा है I

switch (!!up + !!left) { 

क्या है !! ऑपरेटर ? दो तार्किक नहीं?

वेब के समाधान से एकत्रित समाधान "!! सी ऑपरेटर, एक दो नहीं है?"

हाँ, यह दो नोट्स हैं

!!a 1 अगर a शून्य है और 0 यदि 0 तो

आप सोच सकते हैं !! क्लैंपिंग के रूप में, जैसा कि यह था, {0,1} मैं व्यक्तिगत रूप से उपयोग फैंसी प्रकट करने के लिए एक बुरा प्रयास मिल।

आप इसे इस तरह से कल्पना कर सकते हैं:

 !(!(a)) 

यदि आप इसे कदम से कदम करते हैं, तो यह समझ में आता है

 result = !42; //Result = 0 result = !(!42) //Result = 1 because !0 = 1 

यह 1 किसी भी संख्या (-42, 4.2 एफ, आदि) के साथ वापस करेगा, लेकिन केवल 0 साथ, ऐसा होगा

 result = !0; //Result = 1 result = !(!0) //result = 0 

!! एक अधिक पोर्टेबल (प्री-सी 99) विकल्प (_Bool)

आप सही हे। यह दो नोट्स है यह देखने के लिए कि ऐसा क्यों करेगा, यह कोड देखें:

 #include <stdio.h> int foo(const int a) { return !!a; } int main() { const int b = foo(7); printf( "The boolean value is %d, " "where 1 means true and 0 means false.\n", b ); return 0; } 

यह आउटपुट करता है The boolean value is 1, where 1 means true and 0 means false. यदि आप ड्रॉप !! हालांकि, यह आउटपुट करता है The boolean value is 7, where 1 means true and 0 means false.