c++ - Is it legal to cast float* to std::complex* -
26.4 [जटिल। अंक] कास्टिंग के बारे में यह कहता है क्या यह (या मानक के कुछ अन्य शब्द) इसका अर्थ है कि मैं दूसरी तरह से एनएम के रूप में नीचे बताया, मुझे यह सुनिश्चित करना होगा कि नहीं, यह खंड ऐसी कोई गारंटी नहीं देता है। अब, व्यवहार में, सबसे आम मुद्दा संरेखण होगा: लेकिन यह भी दुर्लभ हो सकता है। दूसरी समस्या में सख्त अलियासिंग शामिल होगा, जहां स्मृति को यह, हालांकि, आमतौर पर काम करेगा अधिक बार यदि आप इसे संरेखित करते हैं, और आपका कंपाइलर सख्त अलियासिंग मान्यताओं का उपयोग नहीं करता है: फिर भी यह मानक द्वारा अपरिभाषित व्यवहार है, तथापि। std :: complex & lt; T & gt; 4 इसके अलावा, यदि कोई एक प्रकार की अभिव्यक्ति है तो
cv std :: complex & lt; T & gt; * से
कोड> और अभिव्यक्ति
एक [i] एक पूर्णांक अभिव्यक्ति
i के लिए अच्छी तरह से परिभाषित है, फिर:
- reinterpret_cast & lt; cv T * & gt; ( ए) [2 * i]
एक [i] का वास्तविक भाग निर्दिष्ट करेगा, और
- reinterpret_cast & lt; cv T * & gt; (ए) [2 * I + 1]
a [i] का काल्पनिक हिस्सा निर्दिष्ट करेगा।
reinterpret_cast कर सकता हूं? क्या मैं यह कर सकता हूं:
float * pf; std :: जटिल & lt; float & gt; * pc = reinterpret_cast & lt; std :: जटिल & lt; float & gt; * & gt; (पीएफ); पीसी [i] .real ();
pf संरेखण एक
std :: complex & lt; float & gt; के लिए उपयुक्त है। इसका ध्यान रखा जा सकता है।
double < / कोड> संकलक द्वारा ग्रहण किया जा सकता है ताकि संकेतक को अन्य प्रकारों (
char को छोड़कर) से जुड़े किसी भी आपरेशन से संशोधित नहीं किया जा सके। उपर्युक्त जगह एक अन्य तरीका (एक
जटिल आवंटित संकेतक शायद मान नहीं कर सकता है
डबल * s अपने डेटा के लिए नहीं इंगित करता है) जा रहा है, लेकिन आप जिस दिशा में नहीं चाहते । फिर यह अपेक्षाकृत अस्पष्ट है, लेकिन एक संकलक आपके कोड में लिखने के लिए पुन: क्रमित करने के लिए इसका उपयोग कर सकता है।
Comments
Post a Comment