Водич за Ц ++ о руковању флоатс и иннтс

click fraud protection

Инт је цео број као 47 без децималне тачке. Не можете имати 4,5 бебе или петље 32,9 пута. Ако имате флоат, можете имати $ 25,76. Дакле, када креирате свој програм, морате одлучити који тип да користите.

То раде неки скриптни језици? Будући да је неефикасан, плутају заузимају више меморије и обично су спорији од инта. Такође, не можете лако да упоредите два пловка и видите да ли су једнаки као што можете и са инт.

Да бисте управљали бројевима, морате их сачувати у меморији. Пошто се вредност може лако мењати, назива се променљивом.

Тхе преводилац који чита ваш програм и претвара га у машински код, мора да зна о којем се типу ради, тј. да ли је инт или флоат, па пре него што ваш програм користи променљиву, морате изјавити то.

Примијетићете да је варијабла Цоунтер постављена на 0. Ово је опциона иницијализација. Врло добра пракса за иницијализацију варијабли. Ако их не иницијализирате, а затим их користите у коду, а да нисте поставили почетну вредност, променљива ће почети са случајном вредношћу која може 'разбити' ваш код. Вредност ће бити оно што је било у меморији када се учитао програм.

instagram viewer

Који је највећи број који један инт може да похрани?. Па, зависи од врсте Процесори али опште је прихваћено као 32 бита. Пошто може да држи готово исто толико негативних вредности као и позитивне, распон вредности је +/- 2-32 до 232 или -2,147,483,648 до +2,147,483,647.

Ово је за потписан инт, али постоји и непотписан инт који држи нулу или позитивну. Распон се креће од 0 до 4,294,967,295. Само запамти - непотписаним уносима није потребан знак (попут + или -1) испред њих, јер су увек позитивни или 0.

Постоји краћи инт тип, случајно назван кратки инт који користи 16 бита (2 бајта). Ово држи бројеве у распону од -32768 до +32767. Ако користите велики број инт, можете сачувати меморију користећи кратке инт. Неће бити брже, упркос томе што је упола мањи. 32-битни процесори узимају вриједности из меморије у блоковима од по 4 бајта. И.е. 32 бита (Одатле и име - 32-битни ЦПУ!). Дакле, дохваћање 16 бита још захтева 32-битни дохват.

Постоји дужи 64 битни позив дуго дуго у Ц. Неки Ц ++ преводиоци иако не подржавају тај тип, директно користе алтернативно име - нпр. и Борланд и Мицрософт користе _инт64. Ово има распон од -9223372036854775807 до 9223372036854775807 (потписано) и од 0 до 18446744073709551615 (непотписано).

Ако не радите научно програмирање са врло великим или малим бројевима, користићете парове само за већу прецизност. Плодови су добри за 6 цифара тачности, али парови нуде 15.

Размотрите број 567.8976523. То је валидна флоат вредност. Али ако је испишемо помоћу овог кода испод, видећете да се не појављује тачност. Број има 10 цифара, али се чува у променљивој варијанти са само шест цифара прецизности.

Види О улазу и излазу за детаље о томе како цоут ради и како користити прецизност. Овај пример поставља прецизност излаза на 8 цифара. Нажалост, флоатс може садржати само 6, а неки преводиоци ће упозорити о претварању дупла у флоат. Када се покрене, ово се штампа 567.89764

Ако промените прецизност у 15, исписат ће се као 567.897644042969. Сасвим разлика! Сада померите децималну тачку две лево тако да вредност буде 5.678976523 и поново покрените програм. Овога пута производи 5.67897653579712. Ово је тачније, али и даље другачије.

Ако промените врсту вредности у двоструку, а прецизност на 10, одштампаће вредност тачно онако како је дефинисано. Као опште правило, пловци су згодни за мале, небројне бројеве, али са више од 6 цифара, морате да користите парове.

Писање рачунарског софтвера не би вам било од велике користи ако не бисте могли да додајете, одузимате итд. Ево примера 2.

Поред тога, можете да одузмете, множење и дељење. Само користите + за сабирање, - за одузимање, * за множење и / за дељење.

Са плутачима немате контролу над колико децималних тачака је приказано уколико не поставите прецизност као што је приказано раније.

Сада се ширина, поравнање, број децималних места и знакова могу поставити са цоут објекта и иоманип укључују функције датотека.

Хиљаде сепаратора су мало сложеније. Подешавају се са локације рачунара. Локални локал садржи информације релевантне за вашу земљу, попут симбола валуте и децималних тачака и хиљада раздвајача. У Великој Британији и САД-у број 100,98 користи децималну тачку. као децимална тачка, док је у неким европским земљама зарез, тако да 5,70 евра значи цену од 5 евра и 70 центи.

креира објект мпунцт што је референца на а монеипунцт класа шаблона. Ту су информације о специфицираном локалу - у нашем случају тхе хиљаде_сеп () враћа знак који се користи за раздвајање хиљада.

Белешка Чини се да постоје разлике између различитих преводилаца о томе како цоут.имбуе понаша се. Под Висуал Ц ++ 2005 Екпресс Едитион, ово укључује раздвајаче. Али исти код са Мицрософт Висуал Ц ++ 6.0 није!

Ако користите било који од ова два начина форматирања преко цоут.сетф онда прецизност () поставља број децималних места након децималне тачке (не укупан број цифара), али губите на хиљаде форматирања. Такође задња нула (као што је омогућено у иос_басе:: сховпоинт ) постају аутоматски омогућене без потребе сховпоинт.

Очекивали бисте нешто попут вредности 11.0909090909. У ствари, вредност је 11. Зашто је ово? због израз на десној страни (познато као ан рвалуе) је интегер / интегер. Тако се користи цела аритметика која избацује фракциони део и додељује 11 ф. Промена у

У Ц не постоји такав тип као а боол. Изрази у Ц базирани су на томе да је нула лажна или да је нула истинита. У Ц ++ тип боол може да преузме вредности истина или лажно. Ове вредности су и даље једнаке 0 и 1. Негде у преводиоцу ће имати а

Или барем тако дјелује! Двије линије испод вриједе без лијевања, тако да се иза сцене, боови имплицитно претварају у инте и могу се чак повећати или смањити иако је то врло лоша пракса.

Ако ће и даље урадити иф, јер је лоша варијабла једнака нули, али је лоша шифра и треба је избегавати. Добра пракса је да их користите онако како су предвиђени. ако (! в) важи Ц ++, али више волим експлицитније ако је (в! = 0). То је, међутим, питање укуса, а не мора да уради директива.

боље је за преводилац да хвата грешке у току компилације него корисник током извођења

instagram story viewer