определить максимальное значение типа

Discussion in 'LANGS.C' started by cupuyc, Nov 29, 2009.

  1. cupuyc

    cupuyc New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2009
    Messages:
    763
    пишу вот такую конструкцию:
    Code (Text):
    1. #define MAX_UNSIGNED_TYPE_VAL(t)    ((1 << 8 * sizeof(t)) - 1)
    компилятор выдаёт предупреждение: warning C4293: '<<' : shift count negative or too big, undefined behavior
    всё, вроде работает, но закралась у меня подозрение - может на гцц работать не будет или для некоторых больших типов, типа unsigned __int128. вот и думаю - насколько это черевато последствиями.
     
  2. varnie

    varnie New Member

    Blog Posts:
    0
    Joined:
    Jan 2, 2005
    Messages:
    1,785
    а чем неподходит #include <limits> ?
     
  3. _DEN_

    _DEN_ DEN

    Blog Posts:
    0
    Joined:
    Oct 8, 2003
    Messages:
    5,383
    Location:
    Йобастан
    cupuyc

    А вообще послушай умный совет varnie.
     
  4. _DEN_

    _DEN_ DEN

    Blog Posts:
    0
    Joined:
    Oct 8, 2003
    Messages:
    5,383
    Location:
    Йобастан
    А хотя и это не выход. Так что юзать std::numeric_limits и не изобретать велики.
     
  5. cupuyc

    cupuyc New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2009
    Messages:
    763
    угумс. не вариант.