En int är ett heltal som 47 utan en decimal. Du kan inte ha 4,5 barn eller slinga 32,9 gånger. Du kan ha 25,76 $ om du använder en flottör. Så när du skapar ditt program måste du bestämma vilken typ du vill använda.
Detta är vad vissa skriptspråk gör? Eftersom det är ineffektivt tar flottörerna mer minne och är i allmänhet långsammare än ints. Du kan inte enkelt jämföra två flottörer för att se om de är lika som du kan med ints.
För att manipulera siffror måste du lagra dem i minnet. Eftersom värdet lätt kan ändras kallas det en variabel.
De kompilator som läser ditt program och omvandlar det till maskinkod måste veta vilken typ det är, dvs om det är en int eller en float, så innan ditt program använder en variabel måste du deklarera den.
Du kommer att märka att Counter-variabeln är inställd på 0. Detta är en valfri initialisering. Det är en mycket bra praxis att initialisera variabler. Om du gör inte initiera och sedan använda dem i kod utan att ha satt ett initialt värde kommer variabeln börjar med ett slumpmässigt värde som kan 'bryta' koden. Värdet kommer att vara vad som fanns i minnet när programmet laddades.
Vad är det största antalet som en int kan lagra?. Tja, det beror på vilken typ av CPU men det är allmänt accepterat som 32 bitar. Eftersom det kan innehålla nästan lika många negativa värden som positivt, är värdet mellan +/- 2-32 till 232 eller -2,147,483,648 till +2,147,483,647.
Detta är för en signerad int, men det finns också en osignerad int som håller noll eller positivt. Den har ett intervall från 0 till 4 294 967 295. Kom bara ihåg - osignerade myrar behöver inte ett tecken (som + eller -1) framför dem eftersom de alltid är positiva eller 0.
Det finns en kortare int typ, tillfällighet kallad kort int som använder 16 bitar (2 byte). Detta har siffror i intervallet -32768 till +32767. Om du använder ett stort umber av ints kan du eventuellt spara minne genom att använda korta ints. Det går inte snabbare trots att det är halva storleken. 32 bitars CPU: er hämtar värden från minnet i block med 4 byte åt gången. Dvs. 32 bitar (därav namn- 32 bitars CPU!). Så att hämta 16 bitar kräver fortfarande en 32-bitars hämtning.
Det kallas en längre 64-bitars lång lång i C. Vissa C ++ -kompilatorer medan inte stöder den typen använder direkt ett alternativt namn - t.ex. både Borland och Microsoft använder _int64. Detta har ett intervall från -9223372036854775807 till 9223372036854775807 (signerad) och 0 till 18446744073709551615 (osignerad).
Om du inte gör vetenskaplig programmering med mycket stora eller små siffror, använder du bara dubblar för större precision. Floats är bra för 6 siffror med noggrannhet men dubbelspel erbjuder 15.
Tänk på numret 567.8976523. Det är ett giltigt flyttal. Men om vi skriver ut den med den här koden nedan kan du se brist på precision visas. Antalet har 10 siffror, men lagras i en flottör variabel med bara sex siffrorna i precision.
Ser Om input och output för detaljer om hur cout fungerar och hur man använder precision. Detta exempel ställer ut precisionen på 8 siffror. Tyvärr flyter kan bara hålla 6 och vissa kompilatorer kommer att utfärda en varning om att omvandla en dubbel till en flottör. När den körs skrivs detta ut 567.89764
Om du ändrar precisionen till 15 skrivs den ut som 567.897644042969. Ganska skillnad! Flytta nu decimalpunkten två till vänster så att värdet är 5.678976523 och kör programmet igen. Den här gången matar den ut 5.67897653579712. Detta är mer exakt, men ändå annorlunda.
Om du ändrar typ av värde att dubbla och precisionen till 10 kommer det att skriva ut värdet exakt som definierats. Generellt sett är flottörerna praktiska för små, icke heltal, men med mer än 6 siffror måste du använda dubbletter.
Att skriva datorprogramvara skulle inte vara till stor nytta om du inte kunde göra tillägg, subtraktion etc. Här är exempel 2.
Förutom dessutom kan du göra subtraktion, multiplikation och delning. Använd bara + för tillägg, - för subtraktion, * för multiplikation och / för delning.
Med flottörer har du ingen kontroll över hur många decimaler som visas om du inte ställer in precisionen som visas tidigare.
Nu kan bredd, justering, antal decimaler och tecken ställas in med cout objekt och iomanip inkludera filfunktioner.
Tusentals separatorer är lite mer komplicerat. De ställs in från en PC-språk. En plats innehåller information som är relevant för ditt land - till exempel valutasymboler och decimaler och tusentals separatorer. I Storbritannien och USA använder siffran 100,98 en decimal. som decimalpunkt medan det i vissa europeiska länder är ett kommatecken så 5,70 euro betyder ett pris på 5 euro och 70 cent.
skapar ett objekt mpunct vilket är en hänvisning till a moneypunct mall klass. Detta har information om den angivna locale - i vårt fall thousands_sep () metoden returnerar det tecken som används för tusentals separatorer.
Notera Det verkar finnas skillnader mellan olika kompilatorer för hur cout.imbue uppför sig. Under Visual C ++ 2005 Express Edition inkluderade detta separatorer. Men samma kod med Microsoft Visual C ++ 6.0 inte!
Om du använder någon av dessa två formateringslägen genom cout.setf sedan precision() anger antalet decimaler efter decimalpunkten (inte det totala antalet siffror) men du förlorar de tusentals formateringen. Också avslutande nollor (som de som aktiverats av ios_base:: showpoint ) aktiveras automatiskt utan att behöva showpoint.
Du kan förvänta dig något liknande ett värde av 11.0909090909. I själva verket är värdet 11. Varför är detta? eftersom den uttryck på höger sida (känd som en rvalue) är heltal / heltal. Så det använder heltal aritmetik som kastar bort bråkdelen och tilldelar 11 till f. Ändrar det till
I C finns det ingen sådan typ som bool. Uttryck i C baserades på att en noll var falsk eller att ett icke-noll var sant. I C ++ typen bool kan ta värdena Sann eller falsk. Dessa värden motsvarar fortfarande 0 och 1. Någonstans i kompilatorn kommer den att ha en
Eller åtminstone fungerar det på det sättet! De två raderna nedan är giltiga utan gjutning, så bakom kulisserna, bollar är implicit konverterade till myror och kan till och med ökas eller minskas även om detta är mycket dålig praxis.
If kommer fortfarande att göra if eftersom den dåliga variabeln är icke-noll men den är dålig kod och bör undvikas. God praxis är att använda dem som de är avsedda. om (! v) är giltig C ++ men jag föredrar det mer tydliga om (v! = 0). Det är emellertid en fråga om smak, inte en måste göra direktiv.
det är bättre för kompilatorn att fånga fel vid kompileringstid än användaren vid körning