Программирование >>  Процедурные приложения 

1 ... 26 27 28 [ 29 ] 30 31 32 ... 150


* oprs.c

* Эта программа на языке С демонстрирует применение

* операторов сравнения и логических операторов.

#include <stdio.h> int main ()

float foperand1, foperand2;

printf( \nВведите значения переменных foperand1 и foperand2: ); scanf( %f%f , &foperand1, &foperand2);

printf( \n foperand1 > foperand2 =%d , (foperand1 > foperand2)); printf( \n foperand1 < foperand2 =%d , (foperand1 < foperand2)); printf( \n foperand1 => foperand2 =%d , (foperand1 >= foperand2)); printf( \n foperand1 <= foperand2 = %d ,(foperand1 <= foperand2)); printf( \n foperand1 == foperand2 =%d , (foperand1 == foperand2)); printf( \n foperand1 != foperand2 =%d , (foperand1 != foperand2)); printf( \n foperand1 && foperand2 =%d , (foperand1 && foperand2)); return(0);

Иногда полученные результаты могут вас удивить. Следует помнить, особенно при сравнении значений типа float и double, что отличие даже в последней цифре после запятой будет воспринято как неравенство.

Ниже показана аналогичная программа на языке C++:

* oprs. срр

* Эта программа на языке C++ демонстрирует применение

* операторов сравнения и логических операторов.. #include <iostream.h> int main () {

float foperand1, foperand2;

cout << \nВведите значения переменных foperand1 и foperand2: cin >> foperand1 >> foperand2;

cout << foperand1 > foperand2 = << (foperand1 > foperand2) << \n ; cout << foperand1 < foperand2 = << (foperand1 < foperand2) << \n ; cout << foperand1 >= foperand2 = << (foperand1 >= foperand2) <<

\n ;

cout << foperand1 <= foperand2 = << (foperand1 <= foperand2) <<

\n ;

cout << foperand1 == foperand2 = << (foperand1 == foperand2) <<

\n ;

cout << foperand1 != foperand2 = << (foperand1 != foperand2) <<

\n ;

cout << foperand1 && foperand2 = << (foperand1 S& foperand2) <<

\n ;

cout << foperand1 I Joperand2 = << (foperand1 I I foperand2) <<

\n ;

return(0);

Условный оператор

Оператор ?: часто применяется в различных условных конструкциях. Он имеет cледующий синтаксис:

Условие ? в1ражение1 : выражение2

Если условие равно true выполняется выражение1 в противном случае выражение2. Оператор запятая



Позволяет последовательно выполнить два выражения записанных в одной строке. Синтаксис оператора следующий:

левое выражение, правое выражение

Приоритеты выполнения операторов

Последовательность выполнения различных действий в выражении определяется компилятором.Вследствие этого могут получаться неправильные результаты, если не был учтен порядок разбора выражения компилятором. Побочные эффекты также могут возникать при неправильном использовании простого и комбинированного операторов присваивания.Вот почему важно установление четких приоритетов в выполнении операторов и порядка вычисления операндов. К примеру, операция логического И (&&) всегда выполняется слева направо:

while ((с= getchar())

!= EOF) &£,

\n))

Оператор & & предопределяет, что сначала будет выполнено выражение слева от него, т.е. переменной с будет присвоено значение, возвращаемое функцией getchar (), и только потом это значение проверяется на равенство символу новой строки.

В табл. 5.4 перечислены все операторы языков С и C++ в порядке уменьшения их приоритета (для компилятора MicrosoftVisual C++) и указывается направление вычисления операндов (ассоциативность): слева направо или справа налево.

Таблица 5.4. Операторы языков С и С++ (в порядке уменьшения приоритета)

Оператор

Операция

Ассоциативность

расширение области видимости

Доступ к члену класса по имени класса

Доступ к элементу массива

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

Вызов функции

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

Приведение объекта к другому типу

Прямой доступ к члену класса (через объект)

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

->

Косвенный доступ к члену класса (через указатель на объект)

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

Постфиксный инкремент

Постфиксный декремент

Динамическое создание объекта

delete

Динамическое удаление объекта

delete[]

Динамическое удаление массива

Префиксный инкремент

Префиксный декремент

раскрытие указателя

Взятие адреса

[Унарный плюс

[Унарный минус

логическое НЕ

Побитовое НЕ

sizeof

Получение размерности выражения в байтах

sizeof ()

Получение размерности типа данных в байтах

typeid()

Получение информации о типе операнда

(тип данных)

Приведение типа

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

const cast

Приведение типа

dynamic cast

Приведение типа

reinterpret cast

Приведение типа

static cast

Приведение типа



Прямой доступ к указателю на член класса (через объект)

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

-> *

Косвенный доступ к указателю на член класса (через указатель на объект)

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

Умножение

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

Деление

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

Деление по модулю

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

Сложение

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

Вычитание

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

<<

Сдвиг влево

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

>>

Сдвиг вправо

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

<

Меньше

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

>

Больше

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

<=

Меньше или равно

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

>=

Больше или равно

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

Равно

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

! =

Не равно

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

&

Побитовое И

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

Побитовое исключающее ИЛИ

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

Побитовое ИЛИ

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

Логическое И

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

Логическое ИЛИ

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

? :

Условное выражение

Простое присваивание

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

Присваивание с умножением

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

Присваивание с делением

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

Присваивание с делением по модулю

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

Присваивание со сложением

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

Присваивание с вычитанием

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

<<=

Присваивание со сдвигом влево

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



1 ... 26 27 28 [ 29 ] 30 31 32 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика