चार, हस्ताक्षरित चार और अहस्ताक्षरित चार के बीच व्यवहार में अंतर
नीचे दिया गया कोड सफलतापूर्वक संकलित होता है, लेकिन चार पूर्णांक प्रकारों की तुलना में अलग व्यवहार करता है।
cout ::ikIsX >() ::ikIsX >() ::ikIsX >()परिणाम तीन प्रकारों के लिए तीन इंस्टेंटेशन पैटर्न है: int8, uint8 और char। ऐसा क्यों होता है?
यही पूर्णांकों के लिए सत्य नहीं है: int और uint32 का परिणाम एक पैटर्न इंस्टेंशियेशन में होता है, औरsigned int का परिणाम दूसरे में होता है।
इसका कारण संभवतः यह है कि C, char का व्यवहार करता है। हस्ताक्षरित चार और अहस्ताक्षरित चार तीन अलग-अलग प्रकार के होते हैं। जबकि int,signed int के समान है। क्या यह सच है, या क्या मुझे कुछ याद आ रहा है?
#include
using namespace std; typedef signed char int8; typedef unsigned char uint8; typedef signed short int16; typedef unsigned short uint16; typedef signed int int32; typedef unsigned int uint32; typedef signed long long int64; typedef unsigned long long uint64; struct TrueType {}; struct FalseType {}; template struct isX { typedef typename T::ikIsX ikIsX; }; // Это int==int32 неоднозначно //template bool getIsTrue(); template ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() मैं जी 4.कुछ का उपयोग करता हूं
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3