максимальное значение int

Существует ли код для нахождения максимального значения целого числа (в соответствии с компилятором) в C/C++, подобно функции Integer.MaxValue в java?

Комментарии к вопросу (6)
Решение

На C++:

#include 

тогда используйте

int imin = std::numeric_limits::min(); // minimum value
int imax = std::numeric_limits::max();

std::numeric_limits - это шаблонный тип, который может быть инстанцирован с другими типами:

float fmin = std::numeric_limits::min(); // minimum positive value
float fmax = std::numeric_limits::max();

В C:

#include 

тогда используйте

int imin = INT_MIN; // minimum value
int imax = INT_MAX;

или

#include 

float fmin = FLT_MIN;  // minimum positive value
double dmin = DBL_MIN; // minimum positive value

float fmax = FLT_MAX;
double dmax = DBL_MAX;
Комментарии (6)

Я знаю, что это'ы старый вопрос, но может кто-то может использовать это решение:

int size = 0; // Fill all bits with zero (0)
size = ~size; // Negate all bits, thus all bits are set to one (1)

Пока у нас -1, как результат 'до размер - это знаковый int.

size = (unsigned int)size >> 1; // Shift the bits of size one position to the right.

В стандарте сказано, биты, которые сдвигаются в 1, если переменная является подписанное и отрицательное и 0, если переменная будет подписано или подписано и положительные.

Как размер подпись и отрицательные мы бы перенос в знаковый бит, который равен 1, что не помогает, так что мы бросили в unsigned int и заставляя перекладывать в 0 вместо того, чтобы, установив знаковый бит в 0, а то все остальные биты остаются равными 1.


cout 
Комментарии (1)

#include 
#include 
using namespace std;

int main() {
  cout 
Комментарии (8)

Вот макрос я использую, чтобы получить максимальное значение для знаковых целых чисел, которое не зависит от размера подписанного используется тип Integer, и для которых НКУ -Woverflow выиграл'т жаловаться


#define SIGNED_MAX(x) (~(-1 
Комментарии (0)

Почему бы не написать код типа:


int  max_neg = ~(1 
Комментарии (1)

О. К. Я не есть рэп, чтобы прокомментировать предыдущий ответ (Филиппа де Muyter), ни поднять он'ы результат, поэтому новый пример используя его определение для SIGNED_MAX тривиально продлен для беззнаковых типов:


// We can use it to define limits based on actual compiler built-in types also: 
#define INT_MAX   SIGNED_MAX(int)
// based on the above, we can extend it for unsigned types also:
#define UNSIGNED_MAX(x) (  (SIGNED_MAX(x)
Комментарии (0)

Для максимальной стоимостью инт, я обычно пишу в шестнадцатеричном формате:

int my_max_int = 0x7fffffff;

вместо неправильной десятичное значение:

int my_max_int = 2147483647;
Комментарии (0)

Что о (1 << (8*оператор sizeof(тип int)-2)) - 1 + (1 << (8*размер(инт)-2)). Это так же, как 2^(8*оператор sizeof(тип int)-2) - 1 + 2^(8*оператор sizeof(инт)-2).

Если оператор sizeof(тип int) = 4 => 2^(84-2) - 1 + 2^(84-2) = 2^30 - 1 + 20^30 = (2^32)/2 - 1 [Макс подписанный int 4 байта]`.

Вы можете'т использовать 2*(1 << (8*размер(инт)-2)) - 1, потому что он будет переливаться, а (1 << (8*оператор sizeof(тип int)-2)) - 1 + (1 << (8*размер(инт)-2)) работает.

Комментарии (0)

#include 

int main(){
    int32_t maxSigned = -1U >> 1;
    cout 
Комментарии (0)