"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فيما يلي عناوين الأسئلة والأجوبة باللغة الإنجليزية التي تم إنشاؤها بناءً على محتوى المقالة التي قدمتها: لماذا يتصرف "char" بشكل مختلف عن الأنواع الصحيحة في إنشاء مثيل القالب عند مقارنة "char" و"signed char" و"unsigned c

فيما يلي عناوين الأسئلة والأجوبة باللغة الإنجليزية التي تم إنشاؤها بناءً على محتوى المقالة التي قدمتها: لماذا يتصرف "char" بشكل مختلف عن الأنواع الصحيحة في إنشاء مثيل القالب عند مقارنة "char" و"signed char" و"unsigned c

تم النشر بتاريخ 2024-11-03
تصفح:247

以下是根据您提供的文章内容生成的英文问答类标题:

Why does `char` behave differently from integer types in template instantiation when comparing `char`, `signed char`, and `unsigned char`?

الاختلافات في السلوك بين 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