ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.05.2025
Просмотров: 203
Скачиваний: 0
условие ? выражение1 : выражение2;
Работает операция следующим образом. Если условие истинно (не равно 0), то результатом будет выражение1, в противном случае выражение2. Например, операция y=x<0 ? x : x; записывает в переменную y модуль числа х.
2.5.6. Операция преобразования типа
Для приведения выражения к другому типу данных в С++ существует операция преобразования типа:
(тип) выражение;
Например, в результате действий x=5; y=x/2; z=(float) x/2; переменная y примет значение равное 2 (результат целочисленного деления), а переменная z = 2.5.
2.5.7. Операция определения размера
Вычислить размер объекта или типа в байтах можно с помощью операции определения размера, которая имеет две формы записи:
sizeof (тип) или sizeof выражение
В качестве примера рассмотрим программу, вычисляющую размеры основных типов данных в байтах. Результаты вычислений выводятся на экран (рис. 2.1).
#include "stdafx.h" #include "iostream" using namespace std; int main()
{ |
//Определение целочисленной переменной. |
int i=3; |
|
double d=0.2; |
//Определение вещественной переменной. |
//Вычисление размеров различных типов данных: cout<<"Size char:"<<sizeof (char)<<"\n"; cout<<"Size int:"<<sizeof (int)<<"\n"; cout<<"Size short int:"<<sizeof (short int)<<"\n"; cout<<"Size long int:"<<sizeof (long int)<<"\n";
cout<<"Size long long int:"<<sizeof (long long int)<<"\n"; cout<<"Size float:"<<sizeof (float)<<"\n";
cout<<"Size double:"<<sizeof (double)<<"\n"; cout<<"Size long double:"<<sizeof (long double)<<"\n"; //Размер памяти, отведенной под строку "STROKA". cout<<"Size STROKA:"<<sizeof "STROKA"<<"\n";
//Размер памяти, отведенной под целочисленную переменнцю i. cout<<"Size i:"<<sizeof i<<"\n";
//Размер памяти, отведенной под значение выражения i+d. cout<<"Size i+d:"<<sizeof (i+d)<<"\n";
return 0;
}
На рис. 2.1. видно, сколько памяти отводится под тот или иной тип данных. Остановимся на определении размера объектов. Так, объект STROKA состоит из 6 символов и занимает 7 байтов, т.е. по одному байту на каждую букву и один байт на символ окончания строки (п. 2.2.2). Под переменную i отведено 4 байта. Действительно, тип переменной int, занимает в памяти 4 байта. Последний объект это выражение i+d. Его значение занимает в памяти 8 байт. Это связано с тем, что тип double более длинный (8 байтов) по сравнению с типом int (4 байта) и значение результата было преобразовано к более длинному типу2.
Рис. 2.1. Результаты работы программы, определяющей размеры объектов
2В записи операции sizeof (i+d) были использованы скобки. Это связано с тем, что операция приведения типа имеет более высокий приоритет, чем операция сложения.
2.6. Стандартные функции
В C++ определены стандартные функции над арифметическими операндами (табл. 2.6). Таблица. 2.6. Стандартные математические функции
Обозначение |
Действие |
abs(x) |
Модуль целого числа |
fabs(x) |
Модуль вещественного числа |
sin(x) |
Функция синус |
cos(x) |
Функция косинус |
tan(x) |
Функция тангенс |
atan(x) |
Арктангенс x в диапазоне -π/2 до π/2 |
exp(x) |
Экспонента, ex |
log(x) |
Натуральный логарифм (x>0) |
log10(x) |
Десятичный логарифм (x>0) |
sqrt(x) |
Корень квадратный (x≥0) |
pow(x,y) |
x в степени y |
Определенную проблему представляет применение функции pow(x,y), которая возводит х в степень y. При программировании выражений, содержащих возведение в степень, надо внимательно проанализировать значения, которые могут принимать х и y, так как в
некоторых случаях возведение х в степень y невыполнимо. |
||
Так, ошибка возникает, если х отрицательное число ,а y дробь Предположим. |
что, |
y |
правильная дробь вида k/m. Если знаменатель m четный, это означает вычисление корня четной степени из отрицательного числа, а значит, операция не может быть выполнена. В противном случае, если знаменатель m нечетный, можно воспользоваться выражением z=
pow(fabs(x),y).
2.7. Структура программы
Программа на языке С++ состоит из функций, описаний и директив процессора.
Одна из функций должна обязательно носить имя main. Элементарное описание функции
имеет вид:
тип_результата имя_функции (параметры)
{
оператор1; оператор2;
..
операторN;
}
Здесь, тип_результата это тип того значения ,которое функция должна вычислить если( функция не должна возвращать значение, указывается тип void), имя_функции имя , с которым можно обращаться к этой функции, параметры список аргументов функции (может отсутствовать), оператор1, оператор2,.., операторN операторы , представляющие тело функции, они обязательно заключаются в фигурные скобки и каждый оператор заканчивается точкой с запятой3. Как правило программа на С++ состоит из одной или
нескольких, не вложенных друг в друга функций.
Основному тексту программы предшествуют директивы процессора, которые в общем виде
выглядят так:
#include <имя_файла>
Каждая такая строка дает компилятору команду присоединить программный код, который хранится в отдельном файле с расширением .h. Такие файлы называют файлами заголовков.
3 Подробно работу с функциями рассмотрим в четвертой лекции.
С их помощью можно выполнять ввод-вывод данных, работать с математическими функциями, преобразовывать данные, распределять память и многое другое. Например,
описание стандартных математических функций находится в заголовочном файле math.h. Общую структуру программы на языке С++ можно записать следующим образом:
директивы процессора
описание глобальных переменных тип_результата main(параметры)
{
операторы главной функции
}
тип_результата имя1(параметры1)
{
операторы1;
}
тип_результата имя2(параметры2)
{
операторы2;
}
...................................................
тип_результата имяN(параметрыN)
{
операторыN;
}
2.8. Ввод и вывод данных
Ввод-вывод данных в языке С++ осуществляется либо с помощью функций ввода-вывода в стиле С, либо с использованием библиотеки классов С++. Преимущество объектов С++ в
том, что они легче в использовании, особенно если ввод-вывод достаточно простой. Функции ввода-вывода унаследованные от С более громоздкие, но подходят для задач с форматированным выводом данных.
2.8.1. Функции вводавывода
Функция
printf(строка форматов, список выводимых переменных)
выполняет форматированный вывод переменных, указанных в списке, в соответствии со строкой форматов.
Функция
scanf(строка форматов, список адресов вводимых переменных)
выполняет ввод переменных, адреса которых указанны в списке, в соответствии со строкой форматов.
Строка форматов содержит символы, которые будут выводиться на экран или запрашиваться с клавиатуры и так называемые спецификации. Спецификации это строки, которые
начинаются символом % и выполняют управление форматированием:
% флаг ширина . точность модификатор тип
Параметры флаг, ширина, точность и модификатор в спецификациях могут отсутствовать. Значения параметров спецификаций приведены в табл. 2.7.
Таблица 2.7. Символы управления |
|||
Параметр |
Назначение |
||
Флаги |
|||
-Выравнивание числа влево. Правая сторона дополняется пробелами. По умолчанию выравнивание вправо.