русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операторы отношения и логические операторы


Дата добавления: 2013-12-24; просмотров: 732; Нарушение авторских прав


Арифметические операторы

Операторы

План

Пример

#include <stdio.h>

 

struct bal{

char name[80];

float cash;

};

int main(void)

{

register int i;

FILE *fp;

bal balance[100];

 

// открытие на запись

if((fp=fopen("balance","wb"))==NULL) {

printf("Cannot open file.\n");

return 1;

}

 

for(i=0;i<100;i++) {

balance[i].name[0]='a'+(i%26);

balance[i].name[1]='a'+(i/26);

balance[i].name[2]='\0';

balance[i].cash=(float)i;

}

 

// сохранение массива balance

fwrite(balance,sizeof balance,1,fp);

fclose(fp);

 

//обнуление массива

for(i=0;i<100;i++) {balance[i].cash=0.0;}

 

if((fp=fopen("balance","rb"))==NULL) {

printf("Cannot open file.\n");

return 1;

}

 

//чтение массива

fread(balance, sizeof balance,1,fp);

 

//вывод содержимого массива

for(i=0; i<100; i++) {

printf("%s = ", balance[i].name);

printf("%9f\n",balance[i].cash);

}

printf("\n");

 

fclose(fp);

 

return 0;

}

 

1. Арифметические операторы

2. Операторыотношения и логические операторы

3. Битовые операторы

4. Операторы указания

5. Выражения

6. Операторы управления программой


 

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

 

Приоритет выполнения арифметических операций следующий:

 

высший +(унарный плюс) – (унарный минус) ++ -- * / %



низший + - (бинарные операторы)

 

Операторы, обладающие одним приоритетом, вычисляются компилятором слева направо. Круглые скобки в С устанавливают наивысший приоритет операций.

 

Ключевой концепцией операторов отношения и логических операторов является понятие истины и лжи. В С истине соответствует любое значение кроме 0, лжи – 0. Выражение, использующее операторы отношения или логические операторы, возвращает 0 для лжи и 1 для истины.

 

Операция Значение Пример
! Логическое НЕ !EOF
= = Равно value==0
!= Не равно value!=0
< Меньше i<count
> Больше i>count
> = Больше или равно i>=count
< = Меньше или равно i<=count
|| Логическое ИЛИ !a || b
&& Логическое И a>8 && c<5

 

Таблица истинности для логических операторов образована с использованием на входах 1 и 0:

 

P q p&&q p||q !p

 

Как операторы отношения, так и логические операторы имеют более низкий приоритет по сравнению с арифметическими операторами. Это означает, что выражение 10 > 1 + 12 вычисляется как 10 > (1 + 12). Результатом будет ложь.

Ниже показаны приоритеты выполнения операторов отношения и логических операторов

 

высший !

> >= < <=

== !=

&&

низший ||

 

Как и в арифметических выражениях, возможно использование круглых скобок для изменения естественного порядка вычисления операторов отношения или логических операторов. Например:

 

!1 && 0

 

даст в результате 0, поскольку ! вычисляется первым, а затем вычисляется &&. Если расставить скобки следующим образом:

 

!(1 && 0)

 

то получится истина.

Надо помнить, что все выражения с операторами отношения и логическими операторами дают в результате 0 или 1. Поэтому следующий фрагмент программы не только корректен, но и печатает число 1:

 

int x;

 

x =100;

printf(“%d”, x > 1);


Битовые операторы

С поддерживает все существующие битовые операторы. Битовые операции – это считывание, установка или сдвиг битов в байте или слове, которые соответствуют стандартным типам языка С char и int. Битовые операции не могут использоваться с float, double, long double, void и другими сложными типами.

 

Оператор Действие
& И
| ИЛИ
^ Исключающее ИЛИ
~ Дополнение
>> Сдвиг вправо
<< Сдвиг влево

 

Битовые операторы И, ИЛИ, НЕ используют ту же таблицу истинности, что и их логические эквиваленты, за тем исключением, что они работают побитно. Исключающее ИЛИ имеет следующую таблицу истинности:

 

p q p^q

0 0 0

0 1 1

1 0 1

1 1 0

 

Битовое И чаще всего используется для обнуления битов. То есть любой бит установленный в 0, вызывает установку соответствующего бита в другом операнде в также в 0. Например, следующая функция читает символы из порта модема, используя функцию read_modem(), и сбрасывает бит чётности в 0.

 

char get_char_from_modem(void)

{

char ch;

ch = read_modem();

return (ch & 127);

}

 

Чётность отображается старшим битом, который устанавливается в 0 с помощью битового И, поскольку 7 младших бит равны 1.


Оператор ?

С имеет очень мощный оператор, который можно использовать вместо if-else. Оператор ? имеет следующий вид:

 

выражение1 ? выражение2 : выражение3

 

Оператор ? работает следующим образом: вычисляется выражение1, если оно истинно, то вычисляется выражение2 и всё выражение получает это значение, если ложно, то вычисляется выражение 3 и всё выражение получает это значение. Например:

 

x = 10;

y = x>9 ? 100 : 200;

 

В данном примере y получает значение 100. Если бы х было меньше либо равно 9, то у получила бы значение 200.


Операторы указания & и *

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

 

1. Предоставляют быстрое обращение к элементам массива.

2. Позволяют функциям модифицировать передаваемые параметры.

3. Поддерживают динамические структуры данных.

 

Первый оператор - &. Это унарный оператор, возвращающий адрес операнда в памяти. Например:

 

m = &count;


помещает в m адрес переменной count.

Второй оператор – это *, дополняющая &. Это унарный оператор, возвращающий значение переменной по указанному адресу. Например:

 

q = *m;

 

Переменные, содержащие адреса или указатели, должны объявляться путём помещения * перед именем переменной. Например, для объявления указателя ch на символ, следует написать

 

char *ch;

 

Здесь ch - это не символ, а указатель на символ. Тип данных, на который указывает указатель, называется базовым типом указателя.

Ниже операторы * и & используются для занесения числа 10 в переменную target:

 

#include <stdio.h>

 

int main(void)

{

int target, source;

int *m;

source = 10;

m = &source;

target = *m;

printf(“%d”, target);

return 0

}




<== предыдущая лекция | следующая лекция ==>
Чтение символа | Условный оператор if


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.