Intervalele de tip de date și macro -urile lor în C ++
De cele mai multe ori, în programarea competitivă, este necesar să se atribuie variabila valoarea maximă sau minimă pe care tipul de date o poate deține, dar amintirea unui număr atât de mare și precis apare pentru a fi o muncă dificilă. Prin urmare, C ++ are anumite macro -uri pentru a reprezenta aceste numere, astfel încât acestea să poată fi atribuite direct variabilei fără a tasta efectiv numărul întreg.
Să aruncăm o privire la un exemplu:
C++ #include // for int char macros #include // for float double macros #include using namespace std ; int main () { // Displaying ranges with the help of macros cout < < 'char ranges from: ' < < CHAR_MIN < < ' to ' < < CHAR_MAX < < endl ; cout < < ' n nshort int ranges from: ' < < SHRT_MIN < < ' to ' < < SHRT_MAX < < endl ; cout < < ' n int ranges from: ' < < INT_MIN < < ' to ' < < INT_MAX < < endl ; cout < < ' n long int ranges from: ' < < LONG_MIN < < ' to ' < < LONG_MAX < < endl ; cout < < ' n float ranges from: ' < < FLT_MIN < < ' to ' < < FLT_MAX < < endl ; return 0 ; }
Ieșire
char ranges from: -128 to 127
nshort int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38Tipuri de date și macro -urile lor de gamă
O listă cu unele dintre macro -urile de tip de date este menționată mai jos:
| Tip de date | Gamă | Macro pentru valoare min | Macro pentru valoare maximă |
|---|---|---|---|
| char | -128 până la +127 | Char_min | Char_max |
| Scurt Char | -128 până la +127 | Schar_min | Schar_max |
| Char nesemnat | 0 până la 255 | - | Flying_max |
| scurt int | -32768 până la +32767 | Shrt_min | Shrt_max |
| Nesemnat scurt int | 0 la 65535 | - | Ushrt_max |
| int | -2147483648 la +2147483647 | Int_min | Int_max |
| nesemnat int | 0 până la 4294967295 | - | Uint_max |
| lung int | -9223372036854775808 până la +9223372036854775807 | Long_min | Long_max |
| nesemnat lung int | 0 la 18446744073709551615 | - | Usong_max |
| lung lung | -9223372036854775808 până la +9223372036854775807 | Ship_min | Llong_max |
| nesemnat lung lung | 0 la 18446744073709551615 | - | Ullong_max |
| plutitor | 1.17549E-38 la 3.40282E+38 | Flt_min | Flt_max |
| float (negativ) | -1.17549E -38 până la -3.40282e+38 | -Lt_min | -Flt_max |
| dubla | 2.22507E-308 la 1.79769e+308 | Dbl_min | Dbl_max |
| dublu (negativ) | -2.222507E -308 până la -1.79769e+308 | -Dbl_min | -Dbl_max |
Limite de tip de date în C ++ modern
Abordarea macro de mai sus pentru limitele superioare și inferioare ale tipului de date este vechea abordare a limbajului C moștenită de C ++. Dar C ++ are și propria metodă de a oferi programatorilor aceleași informații.
C ++ oferă numeric_limits <> Șablonul de clasă ca o alternativă modernă la aceste macro -uri. Acest șablon oferă o abordare mai orientată pe obiecte pentru accesarea limitelor de tip de date. Este definit în interiorul
Să aruncăm o privire la un exemplu:
C++ #include #include using namespace std ; int main () { // Displaying ranges with the help of macros cout < < 'short int ranges from: ' < < numeric_limits < short int >:: min () < < ' to ' < < numeric_limits < short int >:: max () < < endl ; cout < < ' n int ranges from: ' < < numeric_limits < int >:: min () < < ' to ' < < numeric_limits < int >:: max () < < endl ; cout < < ' n long int ranges from: ' < < numeric_limits < long >:: min () < < ' to ' < < numeric_limits < long >:: max () < < endl ; cout < < ' n float ranges from: ' < < numeric_limits < float >:: min () < < ' to ' < < numeric_limits < float >:: max () < < endl ; return 0 ; }
Ieșire
short int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38Se recomandă utilizarea acestei abordări pentru a găsi limitele superioare și inferioare ale tipului de date în loc de macro-uri, deoarece este mai sigur de tip și citit în comparație cu abordarea bazată pe macro.