14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

типы и ссылки<br />

Типы для хран<strong>е</strong>ния оч<strong>е</strong>нь больших и оч<strong>е</strong>нь мал<strong>е</strong>ньких Ч И С б Л<br />

Иногда с<strong>е</strong>ми значащих цифр оказыва<strong>е</strong>тся н<strong>е</strong>достаточно. Быва<strong>е</strong>т так, что 10*® —н<strong>е</strong>достаточно<br />

большо<strong>е</strong> число, а 10"“*^ —н<strong>е</strong>достаточно мало<strong>е</strong>. С такими пробл<strong>е</strong>мами сталкиваются программы финансового<br />

уч<strong>е</strong>та и научных иссл<strong>е</strong>дований, и для них в С# пр<strong>е</strong>дназнач<strong>е</strong>ны дополнит<strong>е</strong>льны<strong>е</strong> типы:<br />

★<br />

f l o a t хранит любо<strong>е</strong> число в диапазон<strong>е</strong> от ±1.5- 10'^'’до±3.4 ■10*® с 7 значащими цифрами;<br />

~^^с'таЫасто* d ecim al хранит любо<strong>е</strong> число в диапазон<strong>е</strong> от ±1.0 • 10'^® до ±7.9 • 10^® с 28-29 значащими<br />

встр<strong>е</strong>ча<strong>е</strong>тся цифрами.<br />

Свойство Value<br />

6 программах у п<br />

« К о н с т й н т й » — это ^ ^ с л о к о -<br />

эл<strong>е</strong>м<strong>е</strong>нта управл<strong>е</strong>ния<br />

numericUpPown<br />

финансового<br />

торо<strong>е</strong> 6t>! вводит<strong>е</strong> в код. В Ьы<br />

уч<strong>е</strong>та.<br />

ЛX----' раж<strong>е</strong>ним «int і - 5;» s — это<br />

^принадл<strong>е</strong>жит<br />

константа.<br />

t/ПМЛІЛЛйН<br />

данных<br />

Константы тож<strong>е</strong> им <strong>е</strong>ю т тип<br />

decimal.<br />

Числа, использу<strong>е</strong>мы<strong>е</strong> в программ<strong>е</strong> на С#, называются константами... и вс<strong>е</strong> они<br />

принадл<strong>е</strong>жат какому-то типу. Попробуйт<strong>е</strong> написать код, присваивающий знач<strong>е</strong>ни<strong>е</strong><br />

1 4 .7 п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной типа in t:<br />

Description<br />

i n t m y in t = 1 4 .7 ;<br />

При компиляции вы увидит<strong>е</strong>:<br />

^ 1<br />

Carmot imptkrtty convert type 'double' to ‘inf. An<br />

explicit conversion Bcists (are you missing # cast?)<br />

ИСР сообща<strong>е</strong>т, что константа 1 4 . 7 принадл<strong>е</strong>жит типу d o iib le . Вставив в кон<strong>е</strong>ц<br />

букву F (1 4 . 7F ), вы пом<strong>е</strong>ня<strong>е</strong>т<strong>е</strong> тип константы на f l o a t . А в форм<strong>е</strong> 1 4 . 7М оно<br />

буд<strong>е</strong>т принадл<strong>е</strong>жать уж<strong>е</strong> типу d e c im al.<br />

«М» означа<strong>е</strong>т «m oney»<br />

(д<strong>е</strong>ньги). Я н<strong>е</strong> шучу!<br />

Ещ <strong>е</strong> н<strong>е</strong>сколько встро<strong>е</strong>нны х типов<br />

Для хран<strong>е</strong>ния <strong>е</strong>диничных символов, наприм<strong>е</strong>р, Q, 7 или $ использу<strong>е</strong>тся<br />

тип c h a r. Константы этого типа вс<strong>е</strong>гда заключаются в одиночны<strong>е</strong> кавычки<br />

(' X', ' 3 '). В кавычки можно заключить и <strong>е</strong>вс-посл<strong>е</strong>доват<strong>е</strong>льность (' \ п ' —<br />

это п<strong>е</strong>р<strong>е</strong>нос строки, ' \ t ' —знак табуляции). Хотя в код<strong>е</strong> эти посл<strong>е</strong>доват<strong>е</strong>льности<br />

фигурируют в вид<strong>е</strong> пары символов, программа хранит их в памяти<br />

в вид<strong>е</strong> одного.<br />

И након<strong>е</strong>ц тип таких данных как o b je c t. Вы уж<strong>е</strong> получали объ<strong>е</strong>кты, создавая<br />

экз<strong>е</strong>мпляры классов. Любой из них мог быть п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной типа оЬj e c t.<br />

О том, как работают объ<strong>е</strong>кты и п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нны<strong>е</strong>, которы<strong>е</strong> на них ссылаются, мы<br />

<strong>е</strong>щ<strong>е</strong> поговорим в этой глав<strong>е</strong>.<br />

W T V P M<br />

Попытавшись присвоить<br />

константу<br />

типа float п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной<br />

типа double<br />

или decimal, вы<br />

увидит<strong>е</strong> окно с подсказкой.<br />

К<br />

"О связи м<strong>е</strong>жду<br />

типами char<br />

и byte вы узна<strong>е</strong>т<strong>е</strong><br />

о глав<strong>е</strong> ■?.<br />

в Windows 7 у Калькулятора сущ<strong>е</strong>ству<strong>е</strong>т и р<strong>е</strong>жим «Программист<br />

», позволяющий использовать бинарны<strong>е</strong> и д<strong>е</strong>сятичны<strong>е</strong><br />

числа одновр<strong>е</strong>м<strong>е</strong>нно!<br />

Встро<strong>е</strong>нный калькулятор Windows можно использовать для п<strong>е</strong>р<strong>е</strong>вода д<strong>е</strong>сятичных чис<strong>е</strong>л в двоичны<strong>е</strong>:<br />

п<strong>е</strong>р<strong>е</strong>йдит<strong>е</strong> в Инж<strong>е</strong>н<strong>е</strong>рный р<strong>е</strong>жим, вв<strong>е</strong>дит<strong>е</strong> число, и установит<strong>е</strong> п<strong>е</strong>р<strong>е</strong>ключат<strong>е</strong>ль в полож<strong>е</strong>ни<strong>е</strong> Bin. Для<br />

обратного пр<strong>е</strong>образования достаточно в<strong>е</strong>рнуть п<strong>е</strong>р<strong>е</strong>ключат<strong>е</strong>ль в полож<strong>е</strong>ни<strong>е</strong> Dec. Прод<strong>е</strong>лайт<strong>е</strong> эту оп<strong>е</strong>рацию<br />

с пограничны м и знач<strong>е</strong>ниям и ц<strong>е</strong>лы х ти пов (скаж<strong>е</strong>м, с -32 768 и 255). Вы мож<strong>е</strong>т<strong>е</strong> объяснить,<br />

поч<strong>е</strong>му в <strong>C#</strong> используются им<strong>е</strong>нно таки<strong>е</strong> знач<strong>е</strong>ния?<br />

дальш<strong>е</strong> у 155

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!