Вівторок, 19.03.2024, 06:26
Гость

Мішатронік

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Java чи С++
Всього відповідей: 2
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0


Операция, уровень приоритета которой равен 13

Уровень приоритета операции равен 13, выполняются такие операции слева направо.

 
Операция условный оператор: ?

Тип операндов - арифметические; второй и третий операнды могут быть указателями, структурами, объединениями. Тип результата: intlongunsigneddouble, указатель, структура или объединение. Второй и третий операндыпреобразуются к одному и тому же типу.

 

Условный оператор является единственным оператором, для которого необходимы три операнда ; используется он следующим образом:

 
a ? b : c
 

где abc - выражения. Если a не равно 0, то результат выражения a ? b : c равен b ; иначе результат равен c. Из двух последних операндов вычисляется только один.

 

Использование:

 
ae?e1:e2
 

или

 
pe?e1:e2 (где pe - указатель)
 

Если истинно ae или pe, то выполняется e1 ; иначе выполняется e2. Значением этого выражения является значение выражения e1 или e2.

 

Пример:

 
abs=(i<=0)?-i:i;
 

Операция, уровень приоритета которой равен 14

Уровень приоритета операции равен 14, выполняются такие операции справа налево.

 
Операция простое присваивание "="

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

 

Использование:

 
v=e
 

Присваивание значения e переменной v.

 

Пример:

 
x=y;
 
Операция сложное присваивание "="

Обозначим <знак> один из знаков : +-*/%>><<&^|.

 

В результате выполнения операции присваивания

 
v=e
 

где v - переменная, а e - выражение, значение выражения становится новым значением переменной v.

 
Операция присваивания
v <знак>= e
 

приблизительно эквивалентна оператору присваивания

 
v = v<знак> e
 

Пример 1:

 
y+=2; /* Увеличение переменной y на 2 */
p+=n;
x-=3;
ptr-=2;
timesx*=x;
x/=2;
x%=10;
x>>=4;
x<<=1;
remitems&=mask;
control^=seton;
additems |=mask;
 

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

 
v <знак>= e
 

операнд v вычисляется только один раз, в то время как в выражении

 
v = v <знак> e
 

этот операнд вычисляется дважды. Это различие проявляется в побочных эффектах, связанных с вычислением операнда v, например, при изменении значения какой-либо переменной. Рассмотрим это на примерах:

 
a[i++]* = n;
 

При выполнении вычисление левого операнда дает побочный эффект - увеличение значения переменной i. Следовательно, это присваивание не эквивалентно присваиванию

 
a[i++] = a[i++]*n;.
 

Эквивалентом первой операции присваивания может служить последовательность операций

 
a[i]=a[i]*n;
i=i+1;
 

а эквивалентом второй - последовательность операций

 
a[i]=a[i+1]*n;
i=i+2;
 

или последовательность операций

 
a[i+1]=a[i]*n;
i=i+2;
 

в зависимости от того, какая часть операции присваивания вычисляется раньше - левая или правая. Порядок таких вычислений не определен.

Операция, уровень приоритета которой равен 15

Уровень приоритета операции равен 15, выполняются такие операции слева направо.

 
Операция запятая: ,

Тип результата совпадает с типом правого операнда. Операция объединяет два выражения в одно выражение, значением которого является значение правого операнда; значение левого операнда вычисляется только для получения побочных эффектов.

 

Использование:

 
e1,e2
 

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

 

Пример:

 
for(i=A,j=B;i<j;i++,j--) 
 /* организация циклического повторения. 
 Оператор со счетчиком */
p[i]=p[j];
 

Примеры простых задач

 
/* Задача № 1 (пример на использование операции *) 
Определить площадь боковой поверхности конуса радиуса 
r и имеющего длину образующей l.*/
#include <stdio.h>
#include <math.h>
/* подключение библиотеки математических функций */
const float pi=3.14159;
float r=10; float l=50; float s;
main()
{
 s=pi*r*l;
 printf("\n Площадь боковой поверхности s=%f",s);
}

/* Задача № 2 (пример на использование операций +,
 * и /. Тело движется прямолинейно с ускорением. 
 Даны а(м/сек2) - ускорение, V(M/C) - начальная 
 скорость. Требуется определить, какой путь пройдет 
 тело за t секунд.*/
#include <stdio.h>
float а, v, t, s ;
main()
{
 a=20.2;
 v=50.3;
 t=65;
 s=(v*t)+(a*t*t/2);
 printf("\n Путь s=%f M",s);
}
/* Задача № 3 (пример на использование операций =, 
/ и вычисления степени). Вычислите среднее арифметическое 
и среднее геометрическое трех чисел а,b,с.*/ 
#include <stdio.h> 
#include <math.h> 
float a=b=c=2005.1; float x,у;
main ()
{
 x=(a+b+c)/3;
 y=pow( (a*b*c),(1/3)); 
 /*функция pow берется из библиотеки math.h*/
 printf("\n среднее арифметическое x=%f",x);
 printf("\n среднее геометрическое y=%f",y);
}
/* Задача № 4 (пример на использование операций 
=,*, / и функции hypot. Даны катеты прямоугольного 
треугольника. Найти его гипотенузу и площадь.*/ 
#include <stdio.h>
#include <math.h> 
float x=y=50.7; float z,s; 
main() 
{
 z=hypot(х, у) ;/* вычисление гипотенузы*/ 
 s=x*y/2;
 printf("\n гипотенуза=%f см",z); 
 printf("\n Плoщaдь=%f кв см",s);
}

 

Форма входа
Пошук
Друзі сайту
Календар
«  Березень 2024  »
ПнВтСрЧтПтСбНд
    123
45678910
11121314151617
18192021222324
25262728293031

Єдина Країна! Единая Страна!