14. В файле MyExp.сpp следует добавить в конец блока 3 объявления символьных массивов:
char mm[256]; charnn[32];
15. В конец файла MyExp.сpp нужно добавить блок 14, с кодом, который показан в листинге 4.5. Листинг 4.5
// Блок 14
void f2(){
bool i = false;
int j = 10;
mm[0] = \0;
sprintf(nn, «%d», j);
strcat(mm, " j = ");
strcat(mm, nn);
strcat(mm, «\n»);
i=7;
sprintf(nn, «%d», i);
strcat(mm, " i = ");
strcat(mm, nn);
strcat(mm, «\n»);
j = j+i;
sprintf(nn, «%d», j);
strcat(mm, " j+i = ");
strcat(mm, nn);
strcat(mm, «\n»);
mbstowcs(mstr, mm, 256);
szStr = mstr;
}
16. Изменить вторую по счету ветвь case в блоке 11, как показано в листинге 4.6. Листинг 4.6
case 50: {
f2();
}
break;
ПРИМЕЧАНИЕ. Каждый новый фрагмент кода будет добавляться в новые ветви case оператора выбора switch.
Теперь можно запустить программу. Нажатие клавиши 2 на клавиатуре приведет к появлению в окне последовательности изменения значений переменных. Как и ожидалось, присвоение целочисленной переменной j значения 10 прошло без проблем. А вот присвоение значения 7 переменной i типа bool усекло значение 7 до единицы, и при сложении i и j результат получился равным 11, а не 17. Символьный тип
В переменной типа char может храниться один из символов, входящих в набор символов используемой реализации ОС. Для хранения символа отводится 8 бит, так что всего можно использовать 256 значений этого типа. Можно с достаточной уверенностью предположить, что в набор символов конкретной реализации входят цифры, 26 букв английского алфавита и некоторые основные знаки пунктуации. Все остальные предположения о составе символьного набора не могут считаться достоверными.
Каждая символьная константа имеет числовое значение, отображающее ее порядковый номер в символьном наборе. Тип char может быть как знаковым (signed char), так и беззнаковым (unsigned char). По умолчанию char трактуется как знаковый тип, поэтому если нужно получить беззнаковое преобразование, необходимо явно объявлять переменную типа unsigned char.
Для хранения символов больших наборов, таких как Unicode, используется тип wchar_t.
Символьные типы являются интегральными. Как и к логическим типам, к ним можно применять арифметические и логические операции. Кроме того, имеется ряд символьных констант, называющихся ESC-последовательностями, играющих особые роли при работе с символьными строками. Основные ESC-последовательности приведены в следующем списке.
\'\n\' – новая строка,
\'\t\' – горизонтальная табуляция,
\'\v\' – вертикальная табуляция,
\'\r\' – перевод каретки,
\'\f\' – перевод страницы,
\'\a\' – звуковой сигнал,
\'\ – одиночная кавычка (апостроф),
\'\" – двойная кавычка,
\'\\ – обратная косая черта.
Целые типы
К целочисленным типам относятся int, short int и long int. Вместо двух последних можно применять обозначения short и long. Кроме того, целочисленный тип может быть знаковым и беззнаковым – signed и unsigned. Обычный тип int всегда является знаковым. Если нужно получить беззнаковый тип, следует явно объявить переменную как unsigned. Объявление unsigned равнозначно объявлению unsigned int. Конкретное значение размеров переменной зависит от реализации ОС.
Типы с плавающей точкой
Эти типы представлены тремя размерами – float (одинарная точность), double (двойная точность) и long double (расширенная точность). Конкретное значение размеров переменных зависит от реализации ОС.
Размеры
Размер переменных базовых типов в С++ зависит от реализации ОС. Размеры объектов выражаются в единицах размера char. Исходя из предположения, что переменные типа char занимают один байт, размеры любых других объектов в байтах можно определить при помощи оператора sizeof, как это показано в тестовом примере.
Упражнение 4.1 (продолжение)
17. Объявить в файле MyExp.h функцию f3() и дописать в блок 11 еще одну ветвь case, код которой приведен в листинге 4.7.
Листинг 4.7
case 51: {
f3();
}
break;
18. Добавить в конец файла MyExp.cpp еще один блок, код которого приведен в листинге 4.8. Листинг 4.8
// Блок 15
void f3(){
mm[0] = \0;
sprintf(nn, «%d», (sizeof(char)));
strcat(mm, " Size of type char = ");
strcat(mm, nn);
strcat(mm, «\n»);
sprintf(nn, «%d», (sizeof(wchar_t)));
strcat(mm, " Size of type wchar_t = ");
strcat(mm, nn);
strcat(mm, «\n»);
sprintf(nn, «%d», (sizeof «Hello, Word!»));
strcat(mm, « Size of string \»Hello, Word!\" = ");
strcat(mm, nn);
strcat(mm, «\n»);
mbstowcs(mstr, mm, 256);
szStr = mstr;
}
Результат работы этого блока выводится на экран при нажатии клавиши 3.
Литералы
Литералы – это символьные значения переменных и констант, которые записываются в тексте программы. Для типа bool литералами будут выражения true и false, для типа char литералом будет символ, заключенный в одинарные кавычки.
Читать дальше
Конец ознакомительного отрывка
Купить книгу