اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

متغیر is_signed در سرفایل limits چرا وجود داره؟

0 امتیاز
68 نمایش

در سرفایل limits و کلاس numeric_limits متغیر استاتیکی تعبیه شده که علامت‌دار بودن یا نبودن یک نوع داده رو اعلام می‌کنه

#include <limits>
int main()
{
  bool is_signed = std::numeric_limits<int>::is_signed;
  return 0;
}

چه نیازی به این متغیر هست؟ وقتی ما داریم نوع داده رو می‌بینیم می‌دونیم که علامت دار هست یا نه دیگه

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده چهارشنبه ۵ تیر ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

به دو دلیل، اول اینکه ممکنه شما کلاسی نوشته باشین که با استفاده از قالب‌ها پیاده شده باشه مثل زیر و بخواین از این امکان استفاده کنین

#include <limits>
template <class T>
class X
{
  public:
    void show()
    {
      if(std::numeric_limits<T>::is_signed)
        ...
    }
};

int main()
{
  X<int> int_x;
  X<unsigned> uint_x;
  return 0;
}

دلیل دوم در رابطه با داده‌هایی هست که علامت‌دار بودن یا نبودن اون‌ها وابسته به پیاده‌سازی هست و در استاندارد قید محکمی برای علامت‌دار بودن و نبودن ندارن.

به عنوان نمونه داده‌ی char می‌تونه در پیاده‌سازی علامت‌دار یا بدون علامت در نظر گرفته بشه و مثل int که لزوماً به معنای signed int هست، char لزوماً به معنای signed char نیست بلکه ممکنه unsigned char باشه.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده چهارشنبه ۵ تیر ۱۳۹۲ توسط prodo