2016-06-30 16 views
5

मैंने this को दोहराने की कोशिश की लेकिन यह संकलित नहीं होगा।सी ++ पर हस्ताक्षर किए गए हस्ताक्षर किए गए

unsigned char x = 0; 
reinterpret_cast<signed char>(x); 

इसे कहते हैं

C:\Users\SXG5558\Documents\Arduino\sketch_jun30a\sketch_jun30a.ino: In function 'void setup()': 

sketch_jun30a:3: error: invalid cast from type 'unsigned char' to type 'signed char' 

    reinterpret_cast<signed char>(x); 

            ^

exit status 1 

संपादित करें:

स्पष्ट रूप से, मैं वास्तव में स्मृति में बिट्स पुनर्व्याख्या करने के लिए अहस्ताक्षरित पर हस्ताक्षर किए से चाहते हैं। मैं एक आई 2 सी लाइब्रेरी लिख रहा हूं जो हस्ताक्षरित डेटा को पढ़ता है और लिखता है, लेकिन मैं हस्ताक्षर किए गए सेंसर को नियंत्रित करने के लिए उस लाइब्रेरी का उपयोग कर रहा हूं, इसलिए मैं वास्तविक डेटा को फिर से परिभाषित करना चाहता हूं।

+7

आपके द्वारा लिंक किए गए उदाहरण में 'reinterpret_cast (x); 'है। ध्यान दें '' ' – user463035818

+1

क्या आपका प्रश्न शीर्षक सिर्फ आपके कोड में दिखाए गए विपरीत कास्टिंग दिशा की मांग नहीं कर रहा है? –

+0

बस नूक-इसे '(हस्ताक्षरित चार) x' कास्ट का उपयोग करें। – pm100

उत्तर

5

cppreference.com से प्रासंगिक हिस्सा है

प्रकार अलियासिंग

एक सूचक या संदर्भ जिसका गतिशील प्रकार है DynamicType एक सूचक या वस्तु के संदर्भ में करने के लिए reinterpret_cast (या सी-शैली डाली) है आपत्ति उठाने जब एक अलग प्रकार AliasedType की, कास्ट हमेशा सफल होता है, लेकिन इसके परिणाम स्वरूप सूचक या संदर्भ केवल वस्तु का उपयोग करने की है, तो निम्न में से एक सच है इस्तेमाल किया जा सकता है:

[...]

012,
  • AliasedType

यानी (संभवतः सीवी-योग्य) पर हस्ताक्षर किए या DynamicType

की अहस्ताक्षरित संस्करण है [...]। आप जुड़े हुए उदाहरण से & भूल गए हैं।

+1

पर विश्वास न करें, मुझे विश्वास नहीं है कि मुझे याद आया। एक बेवकूफ सवाल का जवाब देने के लिए धन्यवाद। – charmoniumQ

+0

@ सैम वास्तव में यह इतना बेवकूफ सवाल नहीं है। मुझे समझने के लिए कुछ समय चाहिए कि यह '&' के बिना क्यों काम नहीं करता है और मैं अभी भी इसे समझा नहीं सकता ... – user463035818

+0

मुझे लगता है कि ऐसा इसलिए है कि असाइनमेंट ठीक से हो (उदाहरण के लिए। 'Reinterpret_cast (x) = 10') । वह सवाल पूछता है, क्या होगा यदि आप इस कार्यक्षमता को नहीं चाहते हैं? एक अस्थायी चर के लिए 'f()' के परिणाम को निर्दिष्ट किए बिना 'reinterpret_cast (f())' को आप कैसे डाल सकते हैं। – charmoniumQ

संबंधित मुद्दे