Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Некоторые замечания




Уровень 14 (операторы присваивания)

Уровень 13 (условное выражение)

Логические операторы

Порядок: à

Оператор Уровень Наименование
&&   И
||   Или

Если первый операнд для оператора && равен 0, то второй не вычисляется. Если первый операнд для оператора || равен 1, то второй не вычисляется.

Порядок: à

Правило записи: e 1? e 2: e 3, где e 1, e 2, e 3 - выражения.

Порядок вычисления:

- вычислить e 1;

- если e 1!= 0, то результат = e 2, иначе результат = e 3.

Пример.

a<b? 2*x: x/2

Порядок: ß

Правило записи: e 1[< op >]= e 2

Здесь e 1 - переменная (простая или с индексами), которой задается значение e 2. e 2 - выражение. e 2 преобразуется к типу e 1 (если возможно). Запись < op > является необязательной и означает выполнение указанной операции над "старым" значением e 1 (в качестве второго операнда выступает e 2), а затем присваивание полученного "нового" значения переменной e 1. Допустимыми операциями являются: + - сложение, - – вычитание, * – умножение, / – деление, % – остаток, >>, << – сдвиг вправо или влево, &, ^, | – поразрядные операторы.

Пример.

a*=5; // Это эквивалентно a=a*5;

Замечание. Выражение x*=y+1 означает x=x*(y+1), а не x=x*y+1, поскольку уровень оператора *= ниже уровня оператора +.

В комбинированных операциях значение e 1 вычисляется 1 раз, т.е. выражение a[i++]*=n; эквивалентно a[i]=a[i]*n; i=i+1; (постфиксный оператор ++), а выражение a[++i]*=n; - выражению i=i+1; a[i]=a[i]*n; (префиксный оператор ++).

Оператор = может входить в состав выражения.

Пример.

while ((c= getchar ())!= EOF){// Это означает посимвольное чтение текстового

// файла до его окончания

EOF ( End Of File ) – символическая константа, означающая конец файла и определенная в файле stdio.h.

Переменная e 1 может быть указателем.

Пример.

int *x;

.......

x+=2; // Изменяет значение x на 4 байта.

Замечание. Не увлекайтесь сложными выражениями, пишите проще!

11.12. Уровень 15 (оператор ',' - запятая)

Порядок:à

Формат: e 1[, e 2]..., где e 1, e 2 - выражения.

Результат имеет тип и значение самого правого выражения списка. Как правило, используется с выражениями, содержащими оператор присваивания. Весьма удобен при достаточно сложных инструкциях цикла.

Пример.

for (i=0, j=N-1; i<j; i++, j--){ // Одновременное изменение в одном цикле переменных i

// и j в разных направлениях

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

2. В языке C не задан порядок вычисления операндов. При побочных эф-фектах результат машинно зависим. Побочным эффектом называют изменение значений аргументов функций. В выражении x = f ( x, y )+ g (& x, & y ); при перестановке слагаемых изменится результат.

3. Также не фиксирован порядок вычисления аргументов функций.

Пример.

printf ("%d%d\n", ++n, pow (2,n)); // Результат неоднозначен

4. Не применяйте неоднозначных выражений. Чему равно, например, выражение a [ i ++] = i ++;? Так не писать не следует!!!




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 334; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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