logo

Co to jest short int w C?

W języku programowania C krótki wew to typ danych używany do przechowywania wartości całkowitych. Jest to modyfikator typu, którego można używać z int typ danych aby utworzyć mniejszą zmienną całkowitą, zużywającą mniej pamięci niż zwykła int.

The krótki wew typ danych zajmuje 2 bajty pamięci, która jest o połowę mniejsza od zwykłej int typ danych i może reprezentować wartości całkowite z zakresu -32768 Do 32767 .

Składnia krótkiego int

oops, koncepcje w Javie

Składnia deklarowania krótkiej zmiennej int jest następująca:

 short int variable_name; 

Na przykład poniższy kod deklaruje i inicjuje a krótki wew zmienna o nazwie wiek:

 short int age = 25; 

Krótkie zmienne int mogą prowadzić do błędów, jeśli nie będą używane ostrożnie. Dzieje się tak dlatego, że mają one mniejszy zakres wartości niż zmienne int i może się przepełnić, jeśli przypisano mu wartość spoza ich zakresu. Z tego powodu ważne jest, aby wartości przypisane krótkiej zmiennej int mieściły się w jej zakresie.

Ponadto zamiast słowa kluczowego można użyć słowa kluczowego short krótki wew zadeklarować zmienną tego typu. Dlatego poniższe dwie deklaracje są równoważne:

 short int variable_name; short variable_name; 

Kilka innych dodatkowych szczegółów na temat typ danych „krótki int”. są następujące:

    Rozmiar i zakres wartości

Jak wspomniano wcześniej, short int zajmuje 2 bajty pamięci, która jest o połowę mniejsza niż zwykły typ danych int. Rozmiar krótkiej int jest definiowany przez implementację, co oznacza, że ​​może się różnić w zależności od używanej platformy i kompilatora. Jednak zawsze gwarantuje się, że będzie mniejszy niż zwykła int.

Jeśli chodzi o zakres wartości, krótki int może przechowywać wartości całkowite z zakresu -32768 Do 32767 . Zakres ten można określić za pomocą SHRT_MIN I SHRT_MAX stałe, które są zdefiniowane w pliku limity.h plik nagłówkowy.

    Użycie „krótkiego int”

Typ danych short int jest zwykle używany, gdy problemem jest miejsce w pamięci lub gdy zakres wartości przechowywanych w zmiennej mieści się w zakresie short int. Oto kilka przykładów sytuacji, w których można użyć krótkiej int:

  • W systemach wbudowanych, w których pamięć jest ograniczona.
  • Podczas tworzenia dużych tablic liczb całkowitych, gdzie należy zoptymalizować użycie pamięci.
  • Gdy wiadomo, że zakres wartości przechowywanych w zmiennej mieści się w zakresie a krótki wew , takie jak przechowywanie wieku osoby, który zazwyczaj nie przekracza 100 lat .
  • Modyfikatory typów

The krótki typ danych int jest modyfikatorem typu, co oznacza, że ​​można go używać w połączeniu z innymi typami danych w celu tworzenia nowych typów danych. Na przykład poniżej znajdują się prawidłowe deklaracje zmiennych:

 short int x; short y; short int *ptr; short int arr[10]; 
    Niejawne konwersje

Podczas wykonywania operacji arytmetycznych lub porównawczych pomiędzy zmiennymi o różnych typach danych, C może wykonywać niejawne konwersje, aby zapewnić prawidłowe wykonanie operacji. Używając krótkich zmiennych int, należy mieć świadomość tych konwersji, ponieważ mogą one skutkować nieoczekiwanym zachowaniem. Rozważmy na przykład następujący kod:

 #include int main() { short int x = 300; short int y = 200; short int z = x + y; printf('%d
', z); return 0; } 

Wyjście:

 500 

Wyjaśnienie:

W tym kodzie z ja s przypisano wartość 500 , co jest poprawnym wynikiem dodania X I I . Jeśli jednak drukuj oświadczenie zostaje zmienione na printf('%hu ', z), wyjście będzie 244 , co jest wynikiem konwersji 500 do niepodpisanego krótki wew . Dzieje się tak, ponieważ %hu używany jest specyfikator formatu, który wskazuje, że drukowana wartość powinna być krótką int bez znaku.

    Awans i degradacja

Wykonując operacje pomiędzy zmiennymi o różnych typach danych, C może dokonywać awansów i degradacji, aby mieć pewność, że operacje zostaną wykonane poprawnie. Awans ma miejsce, gdy zmienna o mniejszym typie danych jest niejawnie konwertowana na zmienną o większym typie danych, natomiast degradacja następuje, gdy zmienna o większym typie danych jest niejawnie konwertowana na zmienną o mniejszym typie danych. Używając krótkich zmiennych int, należy mieć świadomość tych awansów i degradacji, ponieważ mogą one mieć wpływ na wyniki operacji arytmetycznych i porównawczych.

    Domyślna inicjalizacja

Jeśli krótka zmienna int jest zadeklarowany bez inicjalizacji, jego wartość jest niezdefiniowana. Innymi słowy, może zawierać dowolną wartość, w tym wartość ujemną lub wartość spoza zakresu krótki wew . Dlatego dobrą praktyką jest zawsze inicjalizować zmienne o znanej wartości podczas ich deklarowania.

Algorytm wyszukiwania binarnego
    Odlew

Odlew to proces konwersji zmiennej z jednego typu danych na inny. Podczas rzutowania zmiennej na a krótki wew , wartość zmiennej jest obcinana, aby zmieścić się w zakresie krótki wew . Rozważmy na przykład następujący kod:

 int x = 500; short int y = (short int) x; 

W tym kodzie wartość X Jest 500 , który jest poza zakresem short int. Jednak kiedy X jest rzutowany na a krótki int, wartość jest obcinana, aby zmieścić się w zakresie krótki wew , w wyniku I przypisuje się wartość -12 . Dlatego podczas rzutowania zmiennych ważne jest, aby upewnić się, że wynikowa wartość mieści się w zakresie rzutowanego typu danych.

    Podpis

Domyślnie, krótki wew jest podpisany typ danych , co oznacza, że ​​może reprezentować zarówno wartości dodatnie, jak i ujemne. Można jednak również zadeklarować krótki wew jako typ danych bez znaku, używając metody krótki int bez znaku Lub krótkie słowo kluczowe bez znaku . Krótki int bez znaku może reprezentować tylko wartości nieujemne, ale jego zakres jest podwojony 0 Do 65535 .

Topologia sieci
    Zgodność

Od krótki wew jest mniejszym typem danych niż wew , można go niejawnie promować do int, gdy jest używany w arytmetyka lub operacje porównania z int. Oznacza to, że A krótki wew można stosować wszędzie tam, gdzie np wew oczekuje się, bez potrzeby wyraźnej obsady.

    Ruchliwość

Rozmiar krótki wew może się różnić w zależności od używanej platformy i kompilatora. Aby zapewnić przenośność kodu na różnych platformach, zaleca się użycie plik nagłówkowy stdint.h , który definiuje typy całkowite o stałym rozmiarze, z określonymi szerokościami i podpisem. Na przykład typ int16_t jest 16-bitowy typ liczby całkowitej ze znakiem , co jest równoważne krótki wew na większości platform.

    Indeksowanie tablic

Deklarując tablicę krótkie wartości int , dostęp do każdego elementu tablicy odbywa się za pomocą indeksu. Indeks może być literałem całkowitym lub zmienną typu int. Jeśli jednak indeks jest zmienną typu krótki wew , zostanie automatycznie awansowany na wew przed użyciem w celu uzyskania dostępu do tablicy. Na przykład:

 short int arr[10]; short int i = 5; short int val = arr[i]; // i is promoted to int before being used as an index 
    Manipulacja bitami

krótki wew może być używany do operacji manipulacji bitami, takich jak przeniesienie I maskowanie . Podczas przesuwania A krótki wew wartością, wynikiem jest krótka wartość int. Jednak w przypadku używania operatorów bitowych, takich jak & i |, krótkie wartości int są najpierw promowane do int przed wykonaniem operacji.

    Wydajność

W niektórych przypadkach użycie short int zamiast int może poprawić wydajność, szczególnie na platformach z ograniczoną pamięcią lub mocą obliczeniową. Zależy to jednak od konkretnego zastosowania i używanego sprzętu i powinno być testowane indywidualnie dla każdego przypadku.

    Inicjalizacja przy użyciu przyrostka

Język C zapewnia przyrostek inicjujący zmienne krótkim typem int. Sufiks 'S' Lub 'S' można użyć ze stałą wartością, aby jawnie określić krótką stałą int. Na przykład:

 Short int x=10s;