Найти тему
D21nk Master

Как увеличить число

Ещё на ранних этапах наших занятий я говорил об разницах типов данных.Напомню,char берёт на себя максимальное число 255.Но если вы соберёте такую программу:

int main()

{

char a=250;

printf("%d\n",a);

return 0;

}

То вы неожиданно получите число -6.Что-то здесь не чисто.

Давайте разбираться.При создании любой переменной она получает свой модификатор,ранее мы уже рассматривали один из них,а именно const.Из простой переменной получалась неизменяемая.

В случае,когда модификатор не был явно указан переменная как минимум создаётся с модификатором signed.Или знаковой.Это значит что мы рассчитываем что в переменную возможно попадание отрицательных чисел.Тут-то наш диапазон в char смещается не от 0 до 255,а от -127 до 126.

Вот вам пример:

int main()

{

signed char a=-50;

char b=-250;

printf("%d %d\n",a,b);

return 0;

}

Компилятор предупредит,что в переменную b -250 число никак не может поместиться и заменит её на 6.В случае же с переменной a-всё будет в порядке.

А если мы уверены,что отрицательное число никак не попадёт в нашу переменную? В этом поможет модификатор unsigned или "беззнаковый".

int main()

{

unsigned char a=250;

printf("%d\n",a);

return 0;

}

Соберите программу и посмотрите что будет.

На этом изменения диапазона у си не заканчиваются.К примеру,если вы хотите сэкономить память-можно использовать вместо int модификатор short,который используется уже не до 4,3 млрд. ,а до 65535.Вообще short можно использовать только с int,а можно и вовсе без него:

int main()

{

unsigned short a=65535;

printf("%d\n",a);

return 0;

}

Всё то же самое,если не добавить модификатор unsigned-то число 65535 не поместится,а будет принимать от -32768 до 32767.

Данный модификатор применятся лишь для int,на char или любой другой тип компилятор вас отругает и поставит в угол,но вот модификатор long можно использовать и с типом double.

Long увеличивает предел числа в два раза,то есть вместо 4,3 млрд можно использоваться 2 в 64 степени.Признаться я даже таких чисел не знаю.Long,как и short можно использовать без int,по умолчанию он и будет:

int main()

{

long a=500;

double long tmp=10.2;

printf("%d %2.f\n",a,tmp);

return 0;

}

Это конечно ещё далеко не все модификаторы типов данных в си,мы рассмотрели лишь те,что могут расширить числовой диапазон или изменить.Не забудьте самостоятельно проанализировать и подумать,где это можно применить.

С вами был D21nkMaster.Всего доброго!