(मैंने प्रश्न "सी" को समय के लिए टैग कर दिया है, लेकिन अगर आप एक और भाषा के बारे में जानते हैं जो यूनियनों का समर्थन करती है, तो आप इसे भी पढ़ सकते हैं।)
आपका कार्य + - * /
निम्नलिखित संरचना के लिए चार मानक गणितीय ऑपरेटरों का निर्माण करना है :
union intfloat{
double f;
uint8_t h[8];
uint16_t i[4];
uint32_t j[2];
uint64_t k;
intfloat(double g){f = g;}
intfloat(){k = 0;}
}
इस तरह के ऑपरेशन खुद ही कभी पूर्णांक भाग में हेरफेर करते हैं या पहुंचते हैं (इसलिए ऑपरेशन के दौरान कभी भी दोहरे के साथ तुलना नहीं करते हैं), और परिणाम बिल्कुल समान है (या कार्यात्मक रूप से समकक्ष, जैसे गैर-संख्यात्मक परिणामों के मामले में NaN
) जैसे कि संबंधित गणितीय ऑपरेशन को double
इसके बजाय सीधे लागू किया गया था ।
आप चुन सकते हैं कि कौन सा पूर्णांक भाग हेरफेर करने के लिए है, शायद विभिन्न ऑपरेटरों के बीच अलग-अलग का उपयोग करके भी। (आप यूनियन के किसी भी क्षेत्र से "अहस्ताक्षरित" को हटाने का विकल्प चुन सकते हैं, हालांकि मुझे यकीन नहीं है कि आप ऐसा करना चाहते हैं।)
आपका स्कोर चार संचालकों में से प्रत्येक के लिए वर्णों में कोड की लंबाई का योग है। सबसे कम स्कोर जीतता है।
IEEE 754 विनिर्देशन से अपरिचित हम में से उन लोगों के लिए, यहाँ विकिपीडिया पर इसके बारे में एक लेख दिया गया है।
संपादन:
03-06 08:47 इंटफ्लोट स्ट्रक्चर में कंस्ट्रक्टर जोड़े। आपको मैन्युअल रूप से डबल / आदि सेट करने के बजाय उन्हें परीक्षण के लिए उपयोग करने की अनुमति है।
intstruct
में परिभाषित करने के लिए uint8_8
, uint16_t
और इतने पर के पूर्ण आकार के रूप में short
, int
और इतने पर मानक द्वारा परिभाषित नहीं हैं (प्रत्येक प्रकार का एक न्यूनतम आकार है और आकार में एक सख्त आदेश है, लेकिन बस)।