में int int 4 बाइट्स या 2 बाइट्स है, मैं जानना चाहता हूं कि यह सुनिश्चित करने के लिए int कैसे घोषित किया जाए कि यह 4 बाइट्स या 2 बाइट्स में छोटा है, चाहे प्लेटफॉर्म पर कोई फर्क नहीं पड़ता। क्या सी 99 के पास नियम हैं?यह सुनिश्चित करने के लिए कि सी/सी ++
उत्तर
सी 99 इस बारे में ज्यादा कुछ नहीं कहता है, लेकिन आप यह जांच सकते हैं कि sizeof(int) == 4
है, या आप निश्चित आकार के प्रकार जैसे uint32_t (32 बिट्स हस्ताक्षरित पूर्णांक) का उपयोग कर सकते हैं। उन्हें stdint.h
मैं जानना चाहता हूं कि आकार (int)! = 4 4 बाइट्स को स्वयं कैसे बनाया जाए। धन्यवाद – kkpattern
आपको बहुत धन्यवाद, और सभी लोगों को भी धन्यवाद – kkpattern
@kkpattern, ग्रेड पर क्लिक करके जवाब को "स्वीकार" करना सुनिश्चित करें इस उत्तर के बगल में चेकबॉक्स के बाहर। फिर यह हरा हो जाएगा और आपको एक अतिरिक्त 2 प्रतिनिधि मिलेगा :) – Earlz
limits.h
नहीं, मुझे नहीं लगता कि वह एक int के अधिकतम संभव मूल्य की तलाश में है, वह एक int द्वारा उपयोग किए जाने वाले बाइट्स की संख्या सुनिश्चित करने के लिए एक तरीका ढूंढ रहा है। – FrustratedWithFormsDesigner
तो? वे अविभाज्य हैं। एक 4 बाइट मान में केवल 2^32 मान हो सकते हैं। – Fred
एक ही सिक्के के दो पक्ष, उच्चतम मूल्य के बाद से इस पर नाइटपिक करने की आवश्यकता नहीं है और संख्या का प्रतिनिधित्व करने के लिए आवश्यक बाइट्स की संख्या इतनी बारीकी से संबंधित है। – Fred
में INT_MAX
निरंतर प्रयास करें आप 4 बाइट होने के लिए यह आवश्यकता करना चाहते हैं?
यदि आप केवल int के आकार को देखना चाहते हैं क्योंकि यह प्रत्येक प्लेटफॉर्म पर संकलित है तो आप केवल sizeof(int)
कर सकते हैं।
हाँ मैं इसे 4 बाइट्स की आवश्यकता चाहता हूं क्योंकि मुझे इसे सॉकेट संदेश में रखना होगा। – kkpattern
sizeof (int)
वर्तमान प्रणाली पर स्मृति में int
बाइट्स की संख्या वापस कर देगा।
यदि आप सी 99 का उपयोग कर रहे हैं और किसी दिए गए आकार के पूर्णांक प्रकार की आवश्यकता है, तो stdint.h
शामिल करें। यह uint32_t
जैसे 32-बिट्स के एक हस्ताक्षरित पूर्णांक के लिए uint_fast32_t
को कम से कम 32 बिट्स के एक हस्ताक्षरित पूर्णांक और तेजी से कुछ परिभाषाओं द्वारा लक्ष्य मशीन पर "तेज़" के लिए प्रकारों को परिभाषित करता है।
संपादित करें: याद रखें कि आप भी bitfields उपयोग कर सकते हैं बिट्स की एक विशिष्ट संख्या प्राप्त करने के लिए (हालांकि यह सबसे अच्छा प्रदर्शन नहीं दे सकता है, विशेष रूप से "अजीब" आकार, और सबसे पहलुओं के साथ कर रहे हैं कार्यान्वयन से परिभाषित):
typedef struct {
unsigned four_bytes:32;
unsigned two_bytes:16;
unsigned three_bits:3;
unsigned five_bits:5;
} my_message_t;
संपादित करें 2: यह भी याद रखें कि sizeof
char
एस की संख्या देता है। यह सैद्धांतिक रूप से संभव है (हालांकि इन दिनों बहुत ही असंभव है) कि char
8 बिट्स नहीं है; char
में बिट्स की संख्या limits.h
में CHAR_BIT
के रूप में परिभाषित की गई है।
बिटफील्ड अद्भुत है! :) धन्यवाद आप – kkpattern
बस ध्यान दें कि बिटफील्ड का सटीक प्रतिनिधित्व कार्यान्वयन-निर्भर है और संकलक को अतिरिक्त कोड की अप्रत्याशित मात्रा उत्पन्न करने का कारण बन सकता है, उदाहरण के लिए 3 बिट्स जैसे "अजीब" फ़ील्ड आकारों को संभालने के लिए। और आपके पास बिटकफील्ड सदस्यों के लिए पॉइंटर्स नहीं हो सकते हैं, आदि। यदि आप उपयुक्त लोगों को ढूंढते हैं तो 'stdint.h' प्रकारों का उपयोग करना बेहतर होता है। लेकिन यदि हार्डवेयर आवश्यकताओं या ऐसे मेल खाने के लिए आपको डेटा पैक करने की आवश्यकता है तो बिटफील्ड आसान हो सकते हैं। – Arkku
@ अर्कु बिट्टफील्ड इतना सूक्ष्म है। आपके लिए धन्यवाद नोट – kkpattern
मुझे लगता है कि आप केवल sizeof (int) == 4
चेक से परे कुछ चाहते हैं। शायद आप कुछ संकलन-समय की जांच चाहते हैं।
सी ++ में, आप BOOST_STATIC_ASSERT
का उपयोग कर सकते हैं।
सी में, आप कोड लिखकर संकलन-समय के दावे कर सकते हैं जो असफलता पर नकारात्मक आकार के सरणी बनाने की कोशिश करता है या जो switch
बयान को परिभाषित मामलों के साथ बनाने की कोशिश करता है। उदाहरण के लिए यह स्टैक ओवरफ्लो प्रश्न देखें: Ways to ASSERT expressions at build time in C
आप आकार (int) का उपयोग कर सकते हैं, लेकिन आप कभी भी यह नहीं समझ सकते कि कितना बड़ा int है। सी विनिर्देश किसी int के आकार पर कोई धारणा नहीं डालता है, सिवाय इसके कि यह एक छोटे के आकार के बराबर या बराबर होना चाहिए (जो कि चार के आकार के बराबर या बराबर होना चाहिए)।
अक्सर अंतर्निहित हार्डवेयर के लिए एक int aligns का आकार। इसका मतलब है कि एक int आमतौर पर एक शब्द के समान होता है, जहां एक शब्द मेमोरी बस (या कभी-कभी सीपीयू रजिस्टर चौड़ाई) से प्राप्त डेटा का कार्यात्मक आकार होता है। यह एक शब्द के समान नहीं होना चाहिए, लेकिन सबसे पहले नोट्स मैंने संकेत दिया है कि यह स्मृति हस्तांतरण के लिए पसंदीदा आकार होना चाहिए (जो आम तौर पर एक शब्द है)।
अतीत में, 18 बिट इन्स (पीडीपी -8) और 24 बिट इन्स (पीडीपी -15) रहे हैं। 36 बिट शब्द आकार (पीडीपी -11) के साथ आर्किटेक्चर रहे हैं, लेकिन मुझे याद नहीं है कि उनका int आकार क्या हुआ।
Linux प्लेटफार्मों पर, आप
#include <sys/types.h>
प्रत्येक प्रकार के लिए वास्तविक बिट गणना प्राप्त करने में झांक सकते कर सकते हैं।
मुझे कल रात मिली कि विजुअल स्टूडियो 2008 सी 99 अच्छी तरह से समर्थन नहीं करता है, और यह stdint.h का समर्थन नहीं करता है। लेकिन उनके पास अपने प्रकार हैं। यहाँ एक उदाहरण है:
#ifdef _MSC_VER
typedef __int8 int8_t;
typedef unsigned __int8 uint8_t;
typedef __int16 int16_t;
typedef unsigned __int16 uint16_t;
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#else
#include <stdint.h>
#endif
- 1. यह सुनिश्चित करने के लिए कि वे
- 2. यह सुनिश्चित करने के लिए कि एंड्रॉइड
- 3. यह सुनिश्चित करने के लिए कि
- 4. यह सुनिश्चित करने के लिए कि QTableView में कॉलम अधिकतम
- 5. यह सुनिश्चित करने के लिए कि जावा क्लास
- 6. सीसी
- 7. यह सुनिश्चित करने के लिए कि सब कुछ गिट के साथ धक्का दिया गया है?
- 8. पीएनजी छवि आउटपुट के लिए शीर्षलेख यह सुनिश्चित करने के लिए कि यह ब्राउज़र पर कैश हो जाता है?
- 9. यह सुनिश्चित करने के लिए कि कोड अभी भी रिफैक्टरिंग (डायनामिक भाषा)
- 10. यह सुनिश्चित करने के लिए कि कोई उपयोगकर्ता केवल एक बार एएसपी.NET मतदान
- 11. यह सुनिश्चित करने के लिए कि एक जेनरेट किया गया guid वैश्विक रूप से अद्वितीय है?
- 12. यह सुनिश्चित करने के लिए कि Erlang में कोई संख्या फ़्लोट है?
- 13. यह सुनिश्चित करने के लिए कि अपाचे कॉमन्स सीएलआई में सभी तर्क प्रदान किए गए हैं?
- 14. यह सुनिश्चित करने के लिए कि std :: random_shuffle हमेशा एक अलग परिणाम उत्पन्न करता है?
- 15. यह सुनिश्चित करने के लिए कि आप दो बार सेवा शुरू नहीं करते हैं एंड्रॉइड
- 16. यह सुनिश्चित करने के लिए कि हमारे मोबाइल (आईओएस/एंड्रॉइड) ऐप से एपीआई अनुरोध आते हैं?
- 17. यह सुनिश्चित करने के लिए कि Django मॉडल डेटाबेस स्कीमा से मेल खाता है
- 18. यह सुनिश्चित करने के लिए कि एक पायथन dict कुंजी लोअरकेस हैं?
- 19. यह सुनिश्चित करने के लिए कि ES3 प्रोग्राम ES5 इंजन में कैसे चलेंगे?
- 20. प्रिंट शैलियों: यह सुनिश्चित करने के लिए कि छवि पृष्ठ ब्रेक
- 21. यह सुनिश्चित करने के लिए कि कक्षा में toString() विधि को फिर से कार्यान्वित किया जाए?
- 22. यह सुनिश्चित करने के लिए कि मेरा गिट रेपो कोड सुरक्षित है?
- 23. यह सुनिश्चित करने के लिए कि बिल्डआउट पहले से स्थापित संकुल का उपयोग नहीं करता है?
- 24. यह सुनिश्चित करने के लिए कि मेरी वेबसाइट से अनुरोध कैसे हैं?
- 25. यह सुनिश्चित करने के लिए सबसे प्रभावी तरीका है कि एक सादा पाठ फ़ाइल
- 26. क्या यह सुनिश्चित करने के लिए कोई तरीका है कि टी शून्य नहीं है?
- 27. यह सुनिश्चित करने के लिए कि उपयोगकर्ता नए लोगो को देखते हैं?
- 28. यह सुनिश्चित करने के लिए कि मेरा jQuery। पहले से ही
- 29. यह सुनिश्चित करने के लिए कि AppDomain.CurrentDomain.AssemblyResolve ईवेंट हमेशा निकाल दिया जाता है?
- 30. यह सुनिश्चित करने के लिए कि TestNG.xml में निर्दिष्ट आदेश को बनाए रखा गया है?
@Pavel कि वास्तव में पूछे जाने वाले प्रश्न – Earlz
@Pavel धन्यवाद में होना चाहिए, मैं बहुत खुश है कि मैं इंटरनेट पर StackOverflow पाया हूँ। – kkpattern