अगर मौजूद है तो इसमें शामिल करने के लिए हेडर फ़ाइल है?
यह कोड संकलन त्रुटि देता है:
#include <iostream>
using namespace std;
int main()
{
byte b = 2;
cout << b << endl;
return 0;
}
अगर मौजूद है तो इसमें शामिल करने के लिए हेडर फ़ाइल है?
यह कोड संकलन त्रुटि देता है:
#include <iostream>
using namespace std;
int main()
{
byte b = 2;
cout << b << endl;
return 0;
}
char है जरूरी एक बाइट। यह सिर्फ इतना है कि एक बाइट जरूरी 8 बिट्स नहीं है।
CHAR_BIT। मैंने एक से अधिक एम्बेडेड सिस्टम पर काम किया है जहां बाइट्स लंबाई में 8 बिट्स नहीं हैं। एक चार्ट को 1 के आकार के रूप में परिभाषित किया गया है, हां, एक चार हमेशा एक बाइट है।
char, जो कि कम से कम है 8 बिट। शब्द "बाइट" को अन्य संदर्भों में अलग तरह से परिभाषित किया जा सकता है, लेकिन जब सी या सी ++ की चर्चा करते हैं तो मानक की परिभाषा से चिपकना बेहतर होता है।
using byte = unsigned charऔर उसके साथ क्या करें (जैसे कि आरएमपी का उत्तर बताता है)?
जवाबों:
नहीं, C ++ में कोई बाइट डेटा प्रकार नहीं है। हालाँकि आप हमेशा मानक लाइब्रेरी से बिटसेट हेडर को शामिल कर सकते हैं और बाइट के लिए एक टाइपफेड बना सकते हैं:
typedef bitset<8> BYTE;
NB: यह देखते हुए कि WinDef.h विंडोज़ कोड के लिए BYTE को परिभाषित करता है, यदि आप Windows को लक्षित करने का इरादा रखते हैं, तो आप BYTE के अलावा किसी अन्य चीज़ का उपयोग करना चाह सकते हैं।
संपादित करें: सुझाव के जवाब में कि उत्तर गलत है। उत्तर गलत नहीं है। सवाल था "क्या C ++ में एक 'बाइट' डेटा प्रकार है?"। उत्तर था और है: "नहीं, C ++ में कोई बाइट डेटा प्रकार नहीं है" जैसा कि उत्तर दिया गया है।
सुझाए गए संभावित विकल्प के संबंध में, जिसके लिए यह पूछा गया था कि सुझाया गया विकल्प बेहतर क्यों है?
सी ++ मानक की मेरी प्रति के अनुसार, उस समय:
"वर्ण (चार) के रूप में घोषित की गई वस्तुएं लागू किए गए बुनियादी चरित्र सेट के किसी भी सदस्य को संग्रहीत करने के लिए पर्याप्त बड़ी होंगी": 3.9.1.1
मैंने पढ़ा कि सुझाव देने के लिए कि यदि किसी कंपाइलर के कार्यान्वयन के लिए 16 बिट्स की आवश्यकता होती है, तो बेसिक कैरेक्टर सेट के एक सदस्य को स्टोर करने के लिए एक चार का आकार 16 बिट्स का होना चाहिए। आज के कंपाइलर एक चर के लिए 8 बिट्स का उपयोग करते हैं, लेकिन एक बात जहां तक मैं बता सकता हूं, निश्चित रूप से इसकी कोई गारंटी नहीं है कि यह 8 बिट्स होगा।
दूसरी ओर, "क्लास टेम्पलेट बिटसेट <एन> एक ऑब्जेक्ट का वर्णन करता है जो बिट्स की एक निश्चित संख्या से मिलकर एक अनुक्रम स्टोर कर सकता है, एन।" : 20.5.1। टेम्पलेट के पैरामीटर के रूप में 8 निर्दिष्ट करके अन्य पासवर्ड में, मैं एक वस्तु के साथ समाप्त होता हूं जो 8 बिट्स के अनुक्रम को स्टोर कर सकता है।
कार्यक्रम के संदर्भ में, चार का विकल्प बेहतर है या नहीं, इसलिए निर्भर करता है, जहां तक मैं समझता हूं, हालांकि मैं आपके कंपाइलर और उस समय की आवश्यकताओं पर गलत हो सकता हूं। इसलिए यह कोड लिखने वाले व्यक्ति के ऊपर था, जहां तक मेरा सवाल है, यह निर्धारित करने के लिए कि क्या सुझाया गया विकल्प उनकी आवश्यकताओं / जरूरतों या जरूरतों के लिए उपयुक्त था।
bitset<8>बेहतर कैसे है unsigned char?
std::byte
BIT_CHAR? यह एक रहस्य है। ब्रह्मांड का एक रहस्य ..
नहीं, byteC ++ में कोई प्रकार नहीं है। क्या आप के बजाय चाहते हैं unsigned char(यदि आप वास्तव में 8 बिट की जरूरत है, या, uint8_tसे <cstdint>, सी के बाद से ++ 11 )। ध्यान दें कि charआवश्यक रूप से एक सटीक विकल्प नहीं है, क्योंकि इसका मतलब signed charकुछ संकलक और unsigned charअन्य पर है।
char, signed charऔर unsigned charतीन अलग-अलग प्रकार हैं। charअन्य दो में से एक के रूप में एक ही प्रतिनिधित्व है।
unsigned char8 बिट्स से बड़ा है, तो uint8_tपरिभाषित नहीं किया जाएगा।
<stdint.h>इसके बजाय शामिल करने की आवश्यकता हो सकती है <cstdint>।
std::byteउस पर अंकगणित नहीं किया जा सकता है, जो एक सौदा ब्रेकर हो सकता है।
std::byteसिर्फ एक है एक नौकरी के लिए सही उपकरण का चयन कर सकते (यानी या तो std::byte, char, unsigned charया uint_8)।
typedef unsigned char byte;या इससे बेहतर यह एनम बेहतर क्यों है typedef std::uint8_t byte;?
char*, unsigned char*या std::byte*।
std::byteउस पर प्रदर्शन किया अंकगणित नहीं हो सकता है, जो एक सौदा ब्रेकर हो सकता है।
नहीं, लेकिन C ++ 11 के बाद से [u] int8_t है ।
C ++ 98, C ++ 11 और बाद में संगत बाइट_लाइट भी है ।
namespace std
{
// define std::byte
enum class byte : unsigned char {};
};
यह तब होता है जब आपके C ++ संस्करण में std :: byte नाम स्थान std में बाइट प्रकार को परिभाषित नहीं करेगा। आम तौर पर आप चीजों को एसटीडी में जोड़ना नहीं चाहते हैं, लेकिन इस मामले में यह एक मानक चीज है जो गायब है।
std :: STL से बाइट अधिक संचालन करता है।
char।