logo

Wat is een korte int in C?

In de programmeertaal C, korte int is een gegevenstype dat wordt gebruikt om gehele waarden op te slaan. Het is een typemodifier die kan worden gebruikt met de int-gegevenstype om een ​​kleinere integer-variabele te maken, die minder geheugen gebruikt dan een gewone int.

De korte int gegevenstype in beslag neemt 2 bytes geheugen, dat half zo groot is als een normaal geheugen int-gegevenstype , en kan gehele waarden vertegenwoordigen in het bereik van -32.768 naar 32.767 .

Syntaxis van korte int

nieuwe lijnpython

De syntaxis voor het declareren van een korte int-variabele is als volgt:

 short int variable_name; 

De volgende code declareert en initialiseert bijvoorbeeld a korte int variabele genaamd leeftijd:

 short int age = 25; 

De korte int-variabelen kunnen tot fouten leiden als ze niet zorgvuldig worden gebruikt. Het is omdat ze een kleiner bereik aan waarden hebben dan int-variabelen en kunnen overstromen als er een waarde aan wordt toegekend die buiten hun bereik ligt. Om deze reden is het belangrijk ervoor te zorgen dat de waarden die aan een korte int-variabele zijn toegewezen, binnen het bereik ervan liggen.

Bovendien kan het korte zoekwoord worden gebruikt in plaats van de korte int om een ​​variabele van dit type te declareren. Daarom zijn de volgende twee verklaringen gelijkwaardig:

 short int variable_name; short variable_name; 

Nog enkele aanvullende details over de gegevenstype 'korte int' zijn als volgt:

    Grootte en bereik van waarden

Zoals eerder vermeld, bezet korte int 2 bytes geheugen, dat half zo groot is als een regulier int-gegevenstype. De grootte van een korte int wordt door de implementatie gedefinieerd, wat betekent dat deze kan variëren afhankelijk van het gebruikte platform en de compiler. Het is echter altijd gegarandeerd kleiner dan een gewone int.

In termen van het bereik van waarden kan een korte int gehele waarden opslaan binnen het bereik van -32.768 naar 32.767 . Dit bereik kan worden bepaald met behulp van de SHRT_MIN En SHRT_MAX constanten, die zijn gedefinieerd in de limieten.h header-bestand.

git-status -s
    Gebruik van 'korte int'

Het gegevenstype korte int wordt doorgaans gebruikt wanneer geheugenruimte een probleem is, of wanneer het bereik van de waarden die in de variabele worden opgeslagen binnen het bereik van een korte int ligt. Enkele voorbeelden van situaties waarin een korte int kan worden gebruikt, zijn onder meer:

  • In embedded systemen waar het geheugen beperkt is.
  • Bij het maken van grote arrays met gehele getallen waarbij het geheugengebruik moet worden geoptimaliseerd.
  • Wanneer bekend is dat het bereik van de waarden die in de variabele worden opgeslagen binnen het bereik van a ligt korte int , zoals het opslaan van de leeftijd van een persoon, die doorgaans niet overschreden wordt 100 jaar .
  • Typemodificatoren

De kort int-gegevenstype is een typemodifier, wat betekent dat het in combinatie met andere gegevenstypen kan worden gebruikt om nieuwe gegevenstypen te creëren. Het volgende zijn bijvoorbeeld geldige declaraties van variabelen:

 short int x; short y; short int *ptr; short int arr[10]; 
    Impliciete conversies

Bij het uitvoeren van rekenkundige of vergelijkingsbewerkingen tussen variabelen van verschillende gegevenstypen, kan C impliciete conversies uitvoeren om ervoor te zorgen dat de bewerkingen correct worden uitgevoerd. Wanneer u korte int-variabelen gebruikt, is het belangrijk om op de hoogte te zijn van deze conversies, omdat deze tot onverwacht gedrag kunnen leiden. Neem bijvoorbeeld de volgende code:

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

Uitgang:

 500 

Uitleg:

In deze code wordt z ik s heeft de waarde gekregen van 500 , wat het juiste resultaat is van optellen X En En . Echter, als de afdrukkenf verklaring wordt gewijzigd in printf('%hu ', z), de uitvoer zal zijn 244 , wat het resultaat is van conversie 500 naar een niet-ondertekend korte int . Het gebeurt omdat de %hu Er wordt een formaatspecificatie gebruikt, die aangeeft dat de waarde die wordt afgedrukt een niet-ondertekende korte int moet zijn.

    Promotie en degradatie

Bij het uitvoeren van bewerkingen tussen variabelen van verschillende gegevenstypen kan C promoties en degradaties uitvoeren om ervoor te zorgen dat de bewerkingen correct worden uitgevoerd. Er is sprake van een promotie wanneer een variabele van een kleiner datatype impliciet wordt geconverteerd naar een variabele van een groter datatype, terwijl er sprake is van een degradatie wanneer een variabele van een groter datatype impliciet wordt geconverteerd naar een variabele van een kleiner datatype. Wanneer u korte int-variabelen gebruikt, is het belangrijk om u bewust te zijn van deze promoties en degradaties, omdat deze de resultaten van reken- en vergelijkingsbewerkingen kunnen beïnvloeden.

    Standaard initialisatie

Als een korte int-variabele wordt gedeclareerd zonder te worden geïnitialiseerd, is de waarde ervan ongedefinieerd. Met andere woorden, het kan elke waarde bevatten, inclusief een negatieve waarde of een waarde buiten het bereik van korte int . Daarom is het een goede gewoonte om variabelen altijd op een bekende waarde te initialiseren wanneer ze worden gedeclareerd.

    Gieten

Gieten is het proces waarbij een variabele van het ene gegevenstype naar het andere wordt geconverteerd. Bij het casten van een variabele naar a korte int , wordt de waarde van de variabele afgekapt zodat deze binnen het bereik van past korte int . Neem bijvoorbeeld de volgende code:

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

In deze code is de waarde van X is 500 , wat buiten het bereik van korte int ligt. Echter, wanneer X wordt geworpen op een korte int, de waarde wordt afgekapt zodat deze binnen het bereik van past korte int , met als resultaat En de waarde toegekend krijgt -12 . Daarom is het bij het casten van variabelen belangrijk om ervoor te zorgen dat de resulterende waarde binnen het bereik ligt van het gegevenstype dat wordt gecast.

    Ondertekening

Standaard, korte int is een ondertekend gegevenstype , wat betekent dat het zowel positieve als negatieve waarden kan vertegenwoordigen. Het is echter ook mogelijk om aangifte te doen korte int als een niet-ondertekend gegevenstype, met behulp van de niet-ondertekende korte int of niet-ondertekend kort trefwoord . Een niet-ondertekende korte int kan alleen niet-negatieve waarden vertegenwoordigen, maar het bereik ervan wordt verdubbeld 0 naar 65.535 .

binaire boom java
    Compatibiliteit

Sinds korte int is een kleiner gegevenstype dan int , kan het impliciet worden gepromoveerd tot een int wanneer het wordt gebruikt in rekenkundig of vergelijkingsbewerkingen met een int. Het betekent dat een korte int kan overal worden gebruikt int wordt verwacht, zonder dat er een expliciete cast nodig is.

    Draagbaarheid

De grootte van korte int kan variëren afhankelijk van het gebruikte platform en de compiler. Om portabiliteit van code tussen verschillende platforms te garanderen, wordt aanbevolen om de stdint.h headerbestand , dat integer-typen met een vaste grootte definieert met specifieke breedtes en signatuur. Bijvoorbeeld de int16_t typt is een 16-bits integer-type met teken , wat gelijkwaardig is aan korte int op de meeste platforms.

    Array-indexering

Bij het declareren van een array van korte int-waarden , wordt elk element van de array benaderd via een index. De index kan een letterlijk geheel getal zijn of een variabele van het type int. Als de index echter een variabele van het type is korte int , wordt deze automatisch gepromoveerd naar een int voordat het wordt gebruikt om toegang te krijgen tot de array. Bijvoorbeeld:

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

korte int kan worden gebruikt voor bitmanipulatiebewerkingen, zoals verschuiven En maskeren . Bij het verschuiven van een korte int waarde, het resultaat is een korte int-waarde. Wanneer u echter bitsgewijze operatoren gebruikt, zoals & en |, de korte int-waarden worden eerst gepromoveerd tot int voordat de bewerking wordt uitgevoerd.

    Prestatie

In sommige gevallen kan het gebruik van korte int in plaats van int de prestaties verbeteren, vooral op platforms met beperkt geheugen of beperkte verwerkingskracht. Dit hangt echter af van de specifieke toepassing en de gebruikte hardware en moet van geval tot geval worden getest.

    Initialisatie met behulp van achtervoegsel

C-taal biedt een achtervoegsel om variabelen met een kort int-type te initialiseren. Het achtervoegsel 'S' of 'S' kan worden gebruikt met een constante waarde om expliciet een korte int-constante te specificeren. Bijvoorbeeld:

 Short int x=10s;