• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Typ long I long long zwraca te same wartości dlaczego?

Object Storage Arubacloud
0 głosów
262 wizyt
pytanie zadane 29 stycznia 2022 w C i C++ przez kuras Początkujący (390 p.)
//  limits.cpp
#include <iostream>
#include <climits>     // w starszych systemach użyć limits.h


int main()

{
    using namespace std;
    int n_int = INT_MAX;   //inicjalizacja n_int maks. liczbą int
    short n_short = SHRT_MAX;  //symbole zdefiniowano w pliku limits.h
    long n_long = LONG_MAX;
    long long n_llong = LLONG_MAX;
    
    //operator sizeof zwraca wielkosc typu lub zmiennej
    
    cout << "int ma " << sizeof (int) << " bajty." << endl;
    cout << "short ma " << sizeof n_short << " bajty." << endl;
    cout << "long ma " << sizeof n_long << " bajty."<< endl;
    cout << "long long ma "<< sizeof n_llong << " bajty."<< endl;
    cout << endl;
    
    cout << "Wartości maksymalne " << endl;
    cout << "int:" << n_int << endl;
    cout << "short:" << n_short << endl;
    cout << "long: " << n_long << endl;
    cout << "long long :" << n_llong << endl;
    
    cout << "Minimalna wartość typu int = " << INT_MIN << endl;
    cout << "Bitów na bajt = " << CHAR_BIT <<endl;
    return 0;
}

Program zwraca to

int ma 4 bajty.

short ma 2 bajty.

long ma 8 bajty.

long long ma 8 bajty.

 

Wartości maksymalne 

int:2147483647

short:32767

long: 9223372036854775807

long long :9223372036854775807

Minimalna wartość typu int = -2147483648

Bitów na bajt = 8

Program ended with exit code: 0

long I long long te same wartości o co chodzi?

2 odpowiedzi

+2 głosów
odpowiedź 29 stycznia 2022 przez Oscar Nałogowiec (29,290 p.)
edycja 29 stycznia 2022 przez Oscar
O nic. Standard C nie precyzuje jak duże mają być poszczególne typy, jedynie ustala relacje pomiędzy nimi i są to nieostre nierówności (większe lub równe).

 

W pliku nagłówkowym stdint.h zdefiniowane są typy (typedefami) o konkretnych wielkościach typu int8, uint16 itp.
komentarz 29 stycznia 2022 przez kuras Początkujący (390 p.)
Korzystam z ksiażki Język c++ Szkoła programowania Stephen Prawa i ta jest takie rozwiazanie
int ma 4 bajty.
short ma 2 bajty.
long ma 4 bajty.
long long ma 8 bajty.

Wartości maksymalne 
int:2147483647
short:32767
long: 2142483647
long long :9223372036854775807
Minimalna wartość typu int = -2147483648
Bitów na bajt = 8
Program ended with exit code: 0


A mi to zwróciło dlatego pytałem
int ma 4 bajty.
short ma 2 bajty.
long ma 8 bajty.
long long ma 8 bajty.

Wartości maksymalne 
int:2147483647
short:32767
long: 9223372036854775807
long long :9223372036854775807
Minimalna wartość typu int = -2147483648
Bitów na bajt = 8
Program ended with exit code: 0

 

komentarz 29 stycznia 2022 przez adrian17 Ekspert (344,860 p.)
To że komputer+kompilator Praty zwróciło jedne wartości, nie znaczy że na innej platformie będą te same. Spokojnie mogę Ci też znaleźć platformę gdzie np `int` ma 2 bajty. Standard języka C++ definiuje tylko jakie mają być minimalne rozmiary, ale nie jakie dokładnie.
komentarz 29 stycznia 2022 przez kuras Początkujący (390 p.)
Dzięki koledzy już chyba rozkminiłem o co kaman

""Dlatego jest standaryzacja"
0 głosów
odpowiedź 29 stycznia 2022 przez profesorek96 Szeryf (91,420 p.)
edycja 29 stycznia 2022 przez profesorek96
Zasadniczo chodzi o to że język C jak i C++ to języki kompilowane. To właśnie program zwany kompilatorem tłumaczy kod języka wyższego poziomu na kod maszynowy danego procesora. Tutaj zaczynają się schody, w zasadzie twórcy języka C/C++ nie mają pojęcia gdzie będzie wykorzystywany ten język. Nic nie stoi na przeszkodzie abyś na układzie FPGA stworzył własny mikroprocesor, zdefiniował mu swoją własną listę instrukcji. Następnie sam napisał na program tłumaczący język C na język instrukcji tego procesora. Program ten był by niczym innym jak kompilatorem. Twój własny procesor mógłby operować na zmiennych które zawsze miały by pojemność 64 bitów. Wtedy twój kompilator kompilował by zmienne typu short, int czy long jako zmienne o rozmiarze 64 bitów. Było by to jak najbardziej ok, standard język C/C++ zakłada tylko, że typ short musi być mniejszy bądź równy od typu int i typ int musi być mniejszy bądź równy od typu long. W tym hipotetycznym przypadku relacja ta była by zachowana.
komentarz 29 stycznia 2022 przez adrian17 Ekspert (344,860 p.)

Wtedy twój kompilator kompilował by zmienne typu short, int czy long jako zmienne o rozmiarze 8 bitów. Było by to jak najbardziej ok

To nie jest prawda; minimalnym rozmiarem inta wymaganym przez standard jest 16 bitów.

komentarz 29 stycznia 2022 przez profesorek96 Szeryf (91,420 p.)
Sorki zgoda, mój błąd. Polecam lekturę tabelki pod tym linkiem:

https://en.wikipedia.org/wiki/C_data_types

W sumie to można by było zrobić tak że każda zmienna miała pojemność 64 bity. Wtedy short<=int<=long logn.

Podobne pytania

0 głosów
1 odpowiedź 247 wizyt
pytanie zadane 1 września 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)
+1 głos
1 odpowiedź 1,109 wizyt
0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 19 lutego 2020 w PHP przez Greeenone Pasjonat (16,100 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...