Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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

Ответ:

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

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

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

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

Знак операции Описание Результат
&& Логическое «И» (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-11-11; Мы поможем в написании ваших работ!; просмотров: 322 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2464 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.