Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Логические выражения в языке Си. Правила их записи и вычисления. Примеры.




Ответ:

Условные логические операции:

Оценивают каждый операнд с точки зрения его эквивалентности нулю.

Если значения первого операнда достаточно, чтобы определить результат операции, то второй операнд не вычисляется.

Используются при вычислении составных логических выражений

Знак операции Описание Результат
&& Логическое «И» (AND) Равен «1», если оба операнда имеют нулевые значения, в противном случае равен «0»
|| Логическое «ИЛИ» (OR) Равен «1», если какой-либо из операндов имеет ненулевое значение, в противном случае равен «0»

Результатом выполнения условной логической операции является числовое значение, которое равно:

· «1», если результат выполнения операции – истина;

· «0», если результата выполнения операции – ложь.

Пример:

A = 4;

B = 6;

D = 10;

C = (A>B) || (D>=A); // C равно 1

С = (A!=B) && (D>=A); // C равно 1

Операции отношения:

Знак операции Описание Пример
== Эквивалентно (проверка на равенство) N==0
!= Не равно (проверка на неравенство) N!=8
< Меньше N<9
> Больше N>7
<= Меньше или равно N<=12
>= Больше или равно N>=11
! Логическое отрицание !A = 0

Результатом выполнения операций отношения является числовое значение, которое равно:

· «1», если результат выполнения операции – истина;

· «0», если результата выполнения операции – ложь.

Приоритет:

Приоритет Операция Название
I-й ! логическое отрицание
II-й && логическое умножение
III-й || логическое сложение

11.Оператор присваивания в языке Си. Совместимость и преобразование типов.Примеры.

Ответ:

В языке программирования Си присваивание также является выражением, и значением такого выражения является величина, которая присваивается.

Например: intA = 10; intB, C; C = B =A-1.

Если объекты в левой и правой части операции присваивания имеют разные типы, используется операция приведения типа.

Знак операции Описание Пример
(тип) Явное преобразование типа int S; char T; S = (int)T;

Преобразование (приведение) типа (typecast) – преобразование значения одного типа в значение другого типа:

· Явное (explicit) – задается программистом в теле программы с помощью конструкций языка программирования.

· Неявное (implicit) – выполняется компилятором по определенным правилам языка, например, когда в одном выражении используются переменные нескольких типов (в большинстве языков запрещены).

Явное преобразование типов:

· Унарная операция, имя типа указывается в круглых скобках перед переменной или выражением

int X;

int Y = 200;

char C = 30;

X = (int)C * 10 + Y; // переменная С приводится к типу int

 

· Следует быть внимательным при использовании типа char (по умолчанию может быть знаковым или беззнаковым в настройках компилятора) – лучше явно указывать знаковость char:

char C=255;

int S;

S = (int)C; // если char поумолчанию signed, то S=-1, иначе S=1

Неявное преобразование типов выполняется:

· После вычисления операндов бинарных арифметических, логических, битовых операций, операций сравнения, а также 2-го или 3-го операнда операции «?:»; значения операндов приводятся к одинаковому типу.

· Перед выполнением присваивания.

· Перед передачей аргумента функции.

· Перед возвратом функцией возвращаемого значения.

· После вычисления выражения конструкции switch значение приводится к целочисленному типу.

· После вычисления выражений в операторах ветвления и циклов (if, for, while, do-while).

· В арифметических выражениях тип меньшего размера преобразовывается в тип большего размера:

 

char C; // sizeof(C) ->1
int I; // sizeof(I) -> 2
long int L; // sizeof(L) -> 4
double D; // sizeof(D) -> 8
float F; // sizeof(F) -> 4
r=sizeof(I+L); // r -> 4
r=sizeof(I+D); // r -> 8
r=sizeof(F+3.2); // r -> 8
r=sizeof(C+I); // r -> 2

· При выполнении операции присваивания значение правой части преобразуется к типу левой, который и является типом результата:

o Длинные целые преобразуются в более короткие целые и в переменные типа char посредством отбрасывания (!) лишних битов высокого порядка.

o float преобразуется в int отбрасыванием дробной части.

o double преобразуется во float округлением.

short int I=312; char C; long int L=54000;   C=I; //C равно 56, символ ‘8’ I = L; //I равно -11536 int I; double D=3.45678969; //D равно 3.45678968999999999 float B, F=25.97; B=D; //B равно 3.4567897 I=F; //I равно 25  

· При выполнении логических операций, операций отношения, операторов ветвлений и циклов, условного выражения тернарной операции результат "=1", если они истинны, и "=0" в противном случае.

intr, X=2, Y=5, Z=5;

r=X<=Y; //r -> 1
r=Z>5; //r -> 0
r=Y==Z; //r -> 1

Преобразование типов

· Следует с осторожностью использовать сравнения вещественных чисел.

· Рекомендуется выполнять сравнение плавающих чисел с учетом допустимой погрешности.

НЕПРАВИЛЬНО! ПРАВИЛЬНО!
int L;   double D = 9E-25;   D = D * 1E25; L = (D == 9); #include <stdlib.h> #define EPS 0.0001   int L;   double D=9E-25; D = D * 1E25;   L = (abs(D-9)<=EPS);

12.Процедуры ввода и вывода в консольном режиме в языке Си. Форматированный вывод.Примеры.

Ответ:

Консольный ввод/вывод относится к событиям, возникающим от клавиатуры или на экране. Поскольку ввод и вывод на консоль - это типичные операции, была создана подсистема файловой системы ввода/вывода ANSI С для работы исключительно с консолью. Эти функции направляют операции в стандартный ввод (stdin) и стандартный вывод (stdout) системы. Возможно перенаправить консольный ввод на другие устройства. Для простоты обсуждения предполагается, что консоль - это устройство, используемое стандартными способами.

Библиотека консольного ввода/вывода conio.h

· Заголовочный файл conio.h объявляет несколько библиотечных функций, предназначенных для ввода данных с клавиатуры и вывода данных на экран.

· Библиотека поддерживается только в MS Windows (до этого – в MS DOS), т.е. в UNIX/Linux системах отсутствует.

· Библиотека обеспечивает "низкоуровневый" ввод/вывод за счет непосредственного использования специализированных функций операционной системы (например, ввод без "эхо-отображения" на экран, вывод на консоль без буферизации, определение нажатия клавиши и т.п.).

· Не рекомендуется использование без крайней необходимости.

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

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

Заголовочный файл <stdio.h>.

· Функция printf() – вывод в стандартный поток вывода stdout (на экран).

· Функция scanf() – ввод из стандартного потока ввода stdin (с клавиатуры).

· Функции ввода/вывода из файла (fprintf/fscanf) или области памяти (sprintf/sscanf).

Функция printf() выполняет вывод данных со следующими видами форматирования:

· Округление ПЗ-значений до указанного числа десятичных знаков.

· Выравнивание столбца чисел по положению десятичной точки в столбце.

· Выравнивание выводимых данных по правому и левому краю.

· Вставка литеральных символов (табуляция, новая строк и т.д.) в заданное место выводимой строки.

· Представление ПЗ-числа в экспоненциальном формате.

· Представление целого числа в формате СС8 и СС16.

· Вывод данных всех типов с фиксированной шириной поля и точностью представления.

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

· Вывод символов:

o Вывод отдельного символа - %с. Соответствующий аргумент будет выведен на экран без изменения.

o Вывод строки - %s (выводятся символы до ‘\0’).

· Вывод целочисленных значений:

o Знаковые числа в десятичном формате – %d или %i (эквивалентны)

o Беззнаковые числа:

§ В десятичном формате - %u

§ В восьмеричном формате - %o

§ В шестнадцатеричном формате - %x или %X

· Вывод вещественных чисел:

o В научной нотации - %e или %E

o В виде числа с плавающей точкой - %f

o В виде более короткого из предыдущих вариантов - %g (выбор из %e и %f) или %G (выбор из %E и %f).

Модификаторы формата – указываются между % и спецификатором формата:

· Минимальная ширина поля и «точность» - Х.x. Здесь:

o Ширина поля – минимальная (!) ширина поля для вывода значения (т.е. если значение не помещается, то оно займет больше места).

o «Точность» - количество десятичных разрядов после «.» (для ПЗ-значений) или количество символов (для строки).

· Заполнение ведущими нулями – “0”.

· Обязательный вывод знака числа – “+”.

· Вывод пробела перед положительным значением (при отсутствии модификатора "+") – " " (пробел) - полезно для выравнивания по правому краю положительных и отрицательных целых чисел.

· Выравнивание по левому краю – “-”(по умолчанию весь вывод выравнивается по правому краю).

· Расширенная разрядность (long) – “l” и беззнаковый формат -“u”.










Последнее изменение этой страницы: 2018-04-12; просмотров: 879.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...