Модификаторы типов
За исключением типа void, основные типы данных могут иметь различные модификаторы. Модификаторы используются для более точного управления ситуацией. Ниже приведен список модификаторов: signed unsigned short
Модификаторы signed, unsigned, long и short могут применяться к целочисленным типам. К символам можно применять signed и unsigned, long может применяться к типу double. Таблица показывает все допустимые комбинации стандарта ANSI С для 16-битных типов данных вместе с размером типа в битах и границами применения в Borland С++.
Тип |
Длина в битах |
Диапазон |
char |
8 |
от-128 до 127 |
unsigned char |
8 |
от 0 до 255 |
signed char |
8 |
от-128 до 127 |
int |
16 |
от-32768 до 32767 |
unsigned int |
16 |
от 0 до 65535 |
signed int |
16 |
от -32768 до 32767 |
short int |
16 |
от -32768 до 32767 |
unsigned short int |
16 |
от 0 до 65535 |
signed short int |
16 |
от -32768 до 32767 |
long int |
32 |
от -2147483648 до 2147483647 |
unsigned long int |
32 |
от 0 до 4294967295 |
signed long int. |
32 |
от -2147483648 до 2147483647 |
float |
32 |
от 3.4е-38 до 3.4е+38 |
double |
64 |
от 1.7е-308 до 1.7e+308 |
long double |
80 |
от 3.4е-4932 до 1.1e+4932 |
|
||
№ 7.2.
voidRemoveFigures(void** ppFigs, intcount)
{
intcounter = 0;
void* p = ppFigs[counter];
while(p != NULL)
{
Figures kind = *((Figures*)p);
switch(kind)
{
caseFCyrcle:
free((Cyrcle*)p);
printf("Cyrcle was removed. \n");
break;
caseFRectangle:
free( (Rect*)p);
printf("Rect was removed. \n");
break;
caseFTriangle:
free( (Triangle*)p);
printf("Triangle was removed. \n");
break;
default:
printf("Error in RemoveFigures!!! \n");
return;
}
ppFigs[counter] = NULL;
counter++;
if(counter == count)
return;
p = ppFigs[counter];
}
}
RemoveFigures(ppFigArray, realCount);
_CrtDumpMemoryLeaks();
return0;
}
№8.1.
Оператор if-else выражает процесс принятия альтернативных решений. Его формальный синтаксис таков:
i f (выражение)
оператор1
else
оператор2
Часть, начинающаяся со слова else, необязательна. Вначале вычисляется
выражение; если оно истинно (т.е. имеет ненулевое значение), то выполняется оператор!.
Если оно ложно (т.е. имеет нулевое значение) и присутствует блок else, то выполняется
оператор2. Поскольку в операторе if всего-навсего анализируется числовое значение
выражения, можно несколько упростить отдельные конструкции. Самый очевидный пример —
упрощение следующей конструкции:
if {выражение != 0)
Более краткая форма выглядит так:
if {выражение)
№8.2.
Реализация метода ввода фигур AddFigures представлено ниже:
// Метод для общего ввода фигур
intAddFigures(void** ppFigs)
{
intcounter = 0;
boolquit = false;
while(!quit)
{
if(counter > 3)
returncounter;
Основы создания программ в Си Page 26 of 37 printf("Enter Figure Kind: \n");
printf("1 - Cyrcle;\n");
printf("2 - Rectangle;\n");
printf("3 - Triangle;\n");
printf("e - Exit.\n\n");
intkey = getch();
switch(key)
{
case '1':
{ // блок для автоматической переменнойc
Cyrcle* c = CreateCyrcle();
if(c != NULL) // проверка что объект был создан
{
ppFigs[counter] = c;
counter++;
}
break;
}
case '2':
{ // блок для автоматической переменнойr
Rect* r = CreateRect();
if(r != NULL) // проверка что объект был создан
{
ppFigs[counter] = r; // добавление указателя на объект в массив
counter++;
}
break;
}
case '3':
{
Triangle* t = CreateTriangle();
if(t != NULL) // проверка что объект был создан
{
ppFigs[counter] = t;
counter++;
}
break;
}
case 'e':
case 'E':
printf("%d figures were created.\n\n", counter);
Основы создания программ в Си Page 27 of 37 returncounter;
break;
default:
printf("Enter correct number. Try again of Exit.\n");
}
}
printf("%d figures were created", counter);
returncounter;
}
№ 9.1
