Приоритет операций и порядок вычислений. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Приоритет операций и порядок вычислений.



Правила записи выражений в языках высокого уровня:

 все символы записываются в строку;

 в выражении проставляются все знаки операций;

 при записивыражений учитываются приоритеты операций;

 для влияния на последовательность операций используются ().

В языке С операции с высшими приоритетами вычисляются первыми. Наивысшим приоритетом является приоритет равный 1. Приоритеты и порядок операций приведены в таблице 12.

Таблица 12

Приоритет Знак операции Типы операции Порядок выполнения
1 - ~! * & ++ -- sizeof приведение типов Унарные Справа налево
2 () []. -> Выражение Слева направо
3 * / % Мультипликативные

Слева направо

4 + - Аддитивные
5 << >> Сдвиг
6 < > <= >= Отношение
7 ==!= Отношение (равенство)
8 & Поразрядное И
9 ^ Поразрядное исключающее ИЛИ
10 | Поразрядное ИЛИ
11 && Логическое И
12 || Логическое ИЛИ
13 ?: Условная
14 = *= /= %= += -= &= |= >>= <<= ^= Простое и составное присваивание Справа налево
15 , Последовательное вычисление Слева направо

Правила преобразования типов при выполнении бинарных операций в языке Си:

 для всех операций, кроме операции присваивания, при разных типах операндов

происходит преобразование величины с младшим типом к старшему;

 при выполнении операции присваивания величина, полученная в правой части

преобразуется к типу переменной, стоящей слева от знака =.


 

10. Основные сведения о вводе-выводе Возможности для ввода и вывода не являются частью самого языка С. Между тем реальные программы взаимодействуют со своим окружением гораздо более сложным способом, чем те, которые были затронуты ранее. Библиотечные функции ввода-вывода точно определяются стандартом ANSI, так что они совместимы на любых системах, где поддерживается С. Программы, которые в своем взаимодействии с системным окружением не выходят за рамки возможностей стандартной библиотеки, можно без изменений переносить с одной машины на другую. Свойства библиотечных функций специфицированы в более чем дюжине заголовочных файлов. Во всех приведённых примерах программы первыми строчными являлись:#include #include Данное описание сообщает компилятору о необходимости подключения файлов stdio.h и conio.h. Эти файлы содержат информацию, необходимую для правильного выполнения функций библиотеки стандартноговвода-вывода.В файле stdio.h находится информация о стандартных функциях ввода-вывода. В файле conio.h находится функция getch(), которая ждет нажатия любой клавиши (читает символ, введенный пользователем с клавиатуры без вывода ее на экран).
11. Ввод-вывод символов К наиболее простым и распространенным функциям ввода-вывода данных языка С относятся функции printf() и scanf(). Функцию printf() можно использовать для вывода любой комбинации символов целых и вещественных чисел, строк, беззнаковых целых, длинных целых и беззнаковых длинных целых. В общем случае параметры printf() имеют вид:printf("управляющая строка", [список аргументов]);Управляющая строка содержит символы, которые следует напечатать в спецификации преобразования, и управляющие символы, перед которыми стоит обратная косая черта.Функция ввода данных scanf() является одной из многих функций форматированного ввода, имеющихся во внешних библиотеках. Функция scanf() в качестве фактических параметров использует адреса переменных, а не их значения. Для этого перед соответствующим параметром ставят символ взятия адреса &.&а – означает "адрес переменной а, а не значение, которое переменная имеет в данный момент".Перед именем строки & не указывается, поскольку имя строки совпадает с ее адресом. Строка формата функции scanf() указывает, какие данные ожидаются на входе. Если функция встречает в форматированной строке знак %, за которым следует знак преобразования, то она будет пропускать на входе символы до тех пор, пока не встретит какой-нибудь не пустой символ.Пример:#include #include  main()               {               int weight, height;               printf("Введите ваш вес: ");               scanf("%d", &weight);               printf("Введите ваш рост: ");               scanf("%d", &height);               printf("\n\n Вес = %d, рост = %d \n", weight, height);               getch();               }               В общем случае, параметры функции scanf() имеют вид:               scanf("управляющая строка", [список аргументов]);

 

12. Форматированный ввод-вывод. Модификаторы формата. Спецификаторы преобразования. Подавление ввода.

Форматированный ввод-вывод

Формат преобразования определяется символом. Все возможные символы формата приведены в таблице 13.

Таблица 13

Символ формата Тип выводимого объекта
%c – char Символ
%s – string Строка
%d – int Целое число
%u – unsigned int Целое беззнаковое значение
%o – int Беззнаковое число в 8-ричном представлении
%x – int Беззнаковое число в 16-ричном представлении
%ld – long Длинное число в 10-чном представлении
%lo – long Длинное число в 8-ричном представлении
%lx – long Длинное число в 16-ричном представлении
%lu – unsigned long Беззнаковое длинное число
%f – float/double Число с фиксированной точкой
%e – float/double Число в экспоненциальной форме
%g – float/double В виде f или e в зависимости от значения
%lf – long/float Длинное число с фиксированной точкой
%le – long/float Длинное число в экспоненциальной форме
%p – pointer Указатель (16-ричный адрес)

Каждая спецификация преобразования соответствует одному из аргументов, которые следуют за форматной строкой. Управляющие символы имеют вид:

\b – возврат курсора на шаг назад

\f – новая страница

\n – новая строка

\r – возврат коретки

\t – табуляция или перевод курсора в табличную позицию

\v – вертивальная табуляция

\" – кавычка

\’ – апостроф

\\ – обратная наклонная черта

\ddd – восьмиричный код

\0*dd – 16-ричный код

Список аргументов функции printf() содержит имена переменных, констант или выражения, которые необходимо вывести на экран. Например, при следующей записи на С

               printf("%c = %d \n",g, g);

Значение переменной g выводится как символ алфавита, а после знака равенства – как числовое значение, соответствующее машинному коду этого символа. Перед символом преобразования может стоять цифра, явно указывающая количество позиций в выводимой строке, отведенных для элементов вывода:

               printf("%c = %5d \n",g, g);

 

Пример:

#include

#include

 main()

               {

               int age;

               float doxod;

               age = 23;

               doxod = 100;

               printf("\n Возраст Андрея – %d. Его доход в $ составляет %.2f", age, doxod);

               getch();

               }

                   

В данном примере последовательность "возраст Андрея – " будет выведена с новой строки. Символ %d – спецификация для целой переменной age. Вместо этой спецификации в выводимой строке будет подставляться целое число 23. Знак %.2f – спецификация (символ преобразования формата) для вещественного значения переменной доход, а также указание формата для вывода только двух цифр

после десятичной точки. Таким образом, после выполнения программы на экране будет отображено:

               Возраст Андрея – 23. Его доход в $ составляет 100.00.

Спецификаторы преобразования

Вид спецификации следующий:

%[флаг][W][D]F

Флаг (–) указывает, что выводимое значение выравнивается в отдельном поле влево, по умолчанию – вправо.

W – число, задающее минимальный размер поля вывода. Если указанного поля для вывода недостаточно,

оно будет увеличено. В избыточных позициях поля печатаются пробелом.

D – указывает количество цифр после запятой для данных вещественных типов float или double. Для строк D задает число печатаемых символов строки поля шириной W.

F – определяет формат преобразования.

Подавление ввода

Спецификация преобразования записывается в виде:

%[флаг][W]F

Флаг (*) – дополнительный признак гашения присваивания, при котором значения пропускаются.


 



Поделиться:


Последнее изменение этой страницы: 2021-08-16; просмотров: 42; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.109.30 (0.012 с.)