الاختلافات في السلوك بين char، char الموقّع وchar غير الموقعة
يتم تجميع الكود أدناه بنجاح، ولكن char يتصرف بشكل مختلف عن الأنواع الصحيحة.
cout ::ikIsX >() ::ikIsX >() ::ikIsX >()النتيجة هي ثلاثة أنماط إنشاء لثلاثة أنواع: int8 وuint8 وchar. لماذا يحدث هذا؟
نفس الشيء ليس صحيحًا بالنسبة للأعداد الصحيحة: int و uint32 يؤديان إلى إنشاء مثيل لنمط واحد، وينتج عن int الموقّع نمط آخر.
ربما يرجع السبب إلى أن لغة C تعامل char ، char موقعة وشار غير موقعة في ثلاثة أنواع مختلفة. بينما int هو نفس التوقيع 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 >() استخدم g 4.something
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3