"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या `char`, `signed char`, और `unsigned char` वास्तव में C++ में भिन्न हैं?

क्या `char`, `signed char`, और `unsigned char` वास्तव में C++ में भिन्न हैं?

2024-11-05 को प्रकाशित
ब्राउज़ करें:708

  Are `char`, `signed char`, and `unsigned char` Truly Distinct in C  ?

C में वर्ण प्रकार: विशिष्ट या समतुल्य?

C में, वर्ण प्रकार (चार) का व्यवहार कभी-कभी भिन्न हो सकता है हस्ताक्षरित और अहस्ताक्षरित पूर्णांक, जिससे भ्रम पैदा होता है। विशेष रूप से, निम्नलिखित कोड इस अंतर को प्रदर्शित करता है:

#include 

typedef   signed char       int8;
typedef unsigned char      uint8;

struct TrueType {};
struct FalseType {};

template 
struct isX
{
   typedef typename T::ikIsX ikIsX;
};

template             struct isX  { typedef FalseType ikIsX; };
template             struct isX  { typedef FalseType ikIsX; };
template             struct isX  { typedef FalseType ikIsX; };

template  bool getIsTrue();
template            bool getIsTrue() { return true; }
template            bool getIsTrue() { return false; }

int main(int, char **t )
{
   cout ::ikIsX  >() ::ikIsX  >() ::ikIsX  >() 

यह कोड संकलित होता है लेकिन चार के लिए int8 और uint8 की तुलना में भिन्न परिणाम उत्पन्न करता है। ऐसा इसलिए है क्योंकि C चार, हस्ताक्षरित चार और अहस्ताक्षरित चार को तीन अलग-अलग प्रकारों के रूप में मानता है।

इसके विपरीत, int और uint32 समकक्ष प्रकार हैं:

template             struct isX  { typedef FalseType ikIsX; };
template             struct isX  { typedef FalseType ikIsX; };

यह अंतर इस तथ्य से उत्पन्न होता है कि चार का उपयोग ऐतिहासिक रूप से वर्णों का प्रतिनिधित्व करने और संख्यात्मक मानों को संग्रहीत करने दोनों के लिए किया गया है। नतीजतन, सी सादे चार को एक अलग प्रकार के रूप में मानकर पिछड़ी संगतता बनाए रखता है, जो कि int से अलग है। प्रदान किया। यदि यह सत्य है, तो char एक हस्ताक्षरित प्रकार के रूप में व्यवहार करता है; अन्यथा, यह एक अहस्ताक्षरित प्रकार के रूप में व्यवहार करता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3