Espressioni macro INT_MAX e INT_MIN in C++
-
Utilizzare
INT_MIN
eINT_MAX
per accedere ai limiti specifici del tipo in C++ -
Usa
INT_MIN
eINT_MAX
per generare numeri casuali in C++
In questo articolo verranno illustrati più metodi su come utilizzare le espressioni di macro INT_MAX e INT_MIN in C++.
Utilizzare INT_MIN
e INT_MAX
per accedere ai limiti specifici del tipo in C++
Il linguaggio C++ definisce più tipi di dati incorporati con alcune specifiche sulla quantità di memoria che dovrebbero occupare e sui corrispondenti valori massimi/minimi. I tipi di dati come gli interi sono comunemente usati nei calcoli in cui i loro possibili valori massimi e minimi devono essere considerati per il problema. Sebbene i limiti dipendano dalle dimensioni di archiviazione dei tipi specifici, questi variano in base alla piattaforma hardware. Quindi, dobbiamo accedere a questi valori con un handle fisso, da cui le espressioni macro - INT_MIN
e INT_MAX
. Questi corrispondono ai valori minimo e massimo del tipo di dati signed int
. Il seguente esempio mostra più espressioni di macro che sono disponibili sotto l’intestazione <climits>
.
#include <climits>
#include <iostream>
int main() {
printf("CHAR_BIT = %d\n", CHAR_BIT);
printf("MB_LEN_MAX = %d\n", MB_LEN_MAX);
printf("\n");
printf("CHAR_MIN = %+d\n", CHAR_MIN);
printf("CHAR_MAX = %+d\n", CHAR_MAX);
printf("SCHAR_MIN = %+d\n", SCHAR_MIN);
printf("SCHAR_MAX = %+d\n", SCHAR_MAX);
printf("UCHAR_MAX = %u\n", UCHAR_MAX);
printf("\n");
printf("SHRT_MIN = %+d\n", SHRT_MIN);
printf("SHRT_MAX = %+d\n", SHRT_MAX);
printf("USHRT_MAX = %u\n", USHRT_MAX);
printf("\n");
printf("INT_MIN = %+d\n", INT_MIN);
printf("INT_MAX = %+d\n", INT_MAX);
printf("UINT_MAX = %u\n", UINT_MAX);
printf("\n");
printf("LONG_MIN = %+ld\n", LONG_MIN);
printf("LONG_MAX = %+ld\n", LONG_MAX);
printf("ULONG_MAX = %lu\n", ULONG_MAX);
printf("\n");
printf("LLONG_MIN = %+lld\n", LLONG_MIN);
printf("LLONG_MAX = %+lld\n", LLONG_MAX);
printf("ULLONG_MAX = %llu\n", ULLONG_MAX);
printf("\n");
return EXIT_SUCCESS;
}
Produzione:
CHAR_BIT = 8
MB_LEN_MAX = 16
CHAR_MIN = -128
CHAR_MAX = +127
SCHAR_MIN = -128
SCHAR_MAX = +127
UCHAR_MAX = 255
SHRT_MIN = -32768
SHRT_MAX = +32767
USHRT_MAX = 65535
INT_MIN = -2147483648
INT_MAX = +2147483647
UINT_MAX = 4294967295
LONG_MIN = -9223372036854775808
LONG_MAX = +9223372036854775807
ULONG_MAX = 18446744073709551615
LLONG_MIN = -9223372036854775808
LLONG_MAX = +9223372036854775807
ULLONG_MAX = 18446744073709551615
Usa INT_MIN
e INT_MAX
per generare numeri casuali in C++
I numeri casuali vengono spesso generati tra un intervallo fisso. È utile avere limiti del tipo di dati numerici per specificare i parametri dell’intervallo di conseguenza e non sovraccaricare i risultati generati. Il seguente codice di esempio utilizza uniform_int_distribution
per limitare l’intervallo dei numeri generati. In questo caso, abbiamo specificato i valori INT_MAX
e INT_MIN
per recuperare gli interi dall’intervallo massimo disponibile.
#include <climits>
#include <iomanip>
#include <iostream>
#include <random>
using std::cout;
using std::endl;
using std::setprecision;
int main() {
std::random_device rd;
std::default_random_engine eng(rd());
std::uniform_int_distribution<int> distr(INT_MIN, INT_MAX);
for (int n = 0; n < 6; ++n) {
cout << distr(eng) << "\n";
}
cout << endl;
return EXIT_SUCCESS;
}
-895078088
1662821310
-636757160
1830410618
1031005518
-438660615
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook