क्या हर कोई पास्कल को भूल गया है?
1/6
पैदावार 0.1666666...
(जो भी सटीक समर्थित है)।
1 div 6
पैदावार 0
यह तर्क है कि सी नियम एक गलती है। लगभग सभी सी के अंकगणितीय ऑपरेटर, जहां ऑपरेंड एक ही प्रकार के होते हैं, एक ही प्रकार का परिणाम देते हैं। निरंतरता के लिए कुछ कहा जाना चाहिए।
इसके अलावा, चूंकि C मुख्य रूप से सिस्टम-स्तरीय कोड पर लक्षित है, अधिकांश C प्रोग्राम फ्लोटिंग-पॉइंट का उपयोग बिल्कुल नहीं करते हैं। एक समय में, गलती से एक प्रोग्राम में फ़्लोटिंग-पॉइंट कोड जोड़ना जो अन्यथा आवश्यक नहीं था, एक गंभीर समस्या हो सकती है। यह शायद अभी भी मामला है, छोटे एम्बेडेड सिस्टम के लिए - जो, फिर से, सी के लिए एक प्रमुख लक्ष्य हैं।
अधिकांश सी कार्यक्रमों में, पूर्णांक विभाजन को रौंदना संभवत: बस वैसे ही है जैसा आप चाहते हैं।
यदि 1 / 6
C में फ्लोटिंग-पॉइंट परिणाम मिलता है, तो:
- यह भाषा में एक विसंगति होगी।
- मानक को मनमाने ढंग से चुनाव करना होगा जिसमें परिणाम के लिए फ्लोटिंग-पॉइंट प्रकार का उपयोग किया
double
जा सकता है ( प्राकृतिक पसंद की तरह लग सकता है, लेकिन आप अतिरिक्त सटीकता पसंद कर सकते हैं long double
)
- भाषा को अभी भी पूर्णांक विभाजन के लिए एक ऑपरेशन करना होगा ; फ्लोटिंग-पॉइंट जोड़कर प्रदर्शन करना और फिर ट्रंकटिंग संभवतः बहुत अच्छा नहीं होगा।
सी दो प्रकार के विभाजन के लिए अलग-अलग ऑपरेटर प्रदान कर सकता था, लेकिन ऊपर दूसरा बिंदु अभी भी लागू होगा: परिणाम के लिए तीन में से कौन सा फ्लोटिंग-पॉइंट प्रकार का उपयोग किया जाएगा? और चूंकि यह फ्लोटिंग-पॉइंट डिवीजन प्राप्त करने के लिए काफी आसान है, अगर आपको इसकी आवश्यकता है (एक या दोनों ऑपरेंड के लिए एक फ़्लोटिंग-पॉइंट स्थिरांक का उपयोग करें, या एक या दोनों ऑपरेंड को फ़्लोटिंग-पॉइंट प्रकार पर कास्ट करें), यह स्पष्ट रूप से नहीं था ' टी कि महत्वपूर्ण माना जाता है।
सी मैनुअल के 1974 संस्करण में (के एंड आर के पहले संस्करण के प्रकाशन से 4 साल पहले), रिची ने संभावित भ्रम का भी उल्लेख नहीं किया है:
बाइनरी / ऑपरेटर विभाजन को इंगित करता है। गुणन के लिए उसी प्रकार के विचार लागू होते हैं
जो कहता है कि यदि दोनों ऑपरेंड प्रकार के हैं int
या char
, परिणाम टाइप का है int
।
हां, यह कुछ सी प्रोग्रामर्स के लिए भ्रम का स्रोत है, विशेष रूप से शुरुआती - लेकिन सी बहुत नौसिखिए-अनुकूल होने के लिए नोट नहीं किया गया है।