• 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?

VPS Starter Arubacloud
0 głosów
246 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,100 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,100 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ź 245 wizyt
pytanie zadane 1 września 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)
+1 głos
1 odpowiedź 1,041 wizyt
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 19 lutego 2020 w PHP przez Greeenone Pasjonat (16,100 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...