سؤال

هل هناك طريقة للعثور على الحد الأقصى والحد الأدنى تعريف القيم من التعداد في ج ++؟

هل كانت مفيدة؟

المحلول

لا، لا توجد وسيلة للعثور على الحد الأقصى والحد الأدنى تعريف القيم في أي تعداد في C ++. عندما تكون هناك حاجة هذا النوع من المعلومات، بل هو في كثير من الأحيان ممارسة جيدة لتحديد القيمة الأخيرة والأولى. على سبيل المثال،

enum MyPretendEnum
{
   Apples,
   Oranges,
   Pears,
   Bananas,
   First = Apples,
   Last = Bananas
};

وهناك لا تحتاج إلى الكشف عن اسمه قيم كل قيمة بين First وLast.

نصائح أخرى

لا، ليس في قياسي C ++. يمكنك أن تفعل ذلك يدويا:

enum Name
{
   val0,
   val1,
   val2,
   num_values
};

وسيحتوي num_values عدد القيم في التعداد.

ولا. والتعداد في C أو C ++ هو مجرد قائمة من الثوابت. ليس هناك هيكل أعلى من شأنه أن يعقد مثل هذه المعلومات.

وعادة عندما كنت بحاجة إلى هذا النوع من المعلومات I تدرج في تعداد كحد أقصى والقيمة الأدنى لشيء من هذا القبيل:

enum {
  eAaa = 1,
  eBbb,
  eCccc,
  eMin = eAaaa,
  eMax = eCccc
}

وانظر هذه الصفحة على شبكة الإنترنت لبعض الأمثلة عن كيفية هذا يمكن أن تكون مفيدة: غبي الخدع التعداد

  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

وبعد التعريف، My_enum :: LAST_VALUE == N + 1

وليس تلقائيا، ولكن يمكنك إضافة قيم التعداد الاصطناعية للدلالة دقيقة والحد الأقصى للقيم، منها مثلا.

typedef enum {start_of_colors=-1, eRed, eWhite, eBlue, eGray,
end_of_colors} eListOfTags;

for (eListOfTags i = start_of_colors+1; i < end_of_colors; i++) {
.... 
}

وحتى أنك لا حاجة إليها، ما أقوم به هو فقط أن أقول على سبيل المثال إذا كان لديك:

enum Name{val0,val1,val2};

وإذا كان لديك بيان التبديل وللتحقق مما إذا تم التوصل إلى القيمة الأخيرة يفعل ما يلي:

if(selectedOption>=val0 && selectedOption<=val2){

   //code
}
scroll top