इसे type punning कहा जाता है। यह float
को int
के रूप में व्याख्या करेगा। मतलब, थोड़ा प्रतिनिधित्व बिल्कुल कॉपी किया गया है।
यह एक संभावित खतरनाक ऑपरेशन है, क्योंकि फ्लोटिंग पॉइंट पूर्णांक के कुछ छोटे प्रस्तुतियां पूर्णांक के रूप में जाल प्रस्तुतिकरण हो सकती हैं (हालांकि आईईईई -754 फ्लोट्स और 2 एस पूरक पूर्णांक के मामले में नहीं)।
इसके अतिरिक्त, यह सी मानक के अनुसार अपरिभाषित व्यवहार होने के कारण अब और काम नहीं कर सकता है। यह सख्त एलियासिंग नियम का उल्लंघन कर रहा है।
सी केवल memcpy
के माध्यम से एक अलग प्रकार के चर का उपयोग करने का समर्थन करता है। ,
int y; float x = 42.0f;
memcpy(&y, &x, sizeof(x));
C99 ऐसा करने का एक और तरीका है जोड़ा एक union
का उपयोग करके:
इस आपरेशन लिखने के वैध मानक सी तरीका है
union { int y; float x; } u = { .x = 42.0f };
int y = u.y;
केरमेक वास्तव में एल्गोरिथ्म नहीं लिखा था ; [विकी पेज] देखें (https://en.wikipedia.org/wiki/Fast_inverse_square_root#History_and_investigation)। – DylanSp