- •4.1. Ведение
- •4.2. Состав языка
- •4.3. Типы данных
- •4.4. Описание переменных
- •4.5. Операции
- •Приоритеты (ранги) операций
- •Упражнения
- •4.6. Как вводить и выводить информацию
- •Упражнения
- •4.7. Программирование ветвлений
- •Упражнения
- •4.8. Программирование циклов
- •Упражнения
- •4.9. Функции
- •Упражнения
- •4.10. Массивы
- •Упражнения
- •4.11. Указатели
- •Упражнения
- •4.12. Символьные строки
- •Упражнения
- •4.13. Структуры
- •Упражнения
- •4.14. Оператор typedef
- •Упражнения
- •4.15. Файлы
- •Упражнения
Приоритеты (ранги) операций
Ранг |
Операции |
Ассоциативность |
1 |
( ) [ ] –> . |
|
2 |
! ~ + – ++ – – & * (тип) sizeof (унарные) |
|
3 |
* / % (мультипликативные бинарные) |
|
4 |
+ – (аддитивные бинарные) |
|
5 |
<< >>> (поразрядного сдвига) |
|
6 |
< <= >= > (отношения) |
|
7 |
= = != (отношения) |
|
8 |
& (поразрядная конъюнкция «И») |
|
9 |
^ (поразрядное исключающее «ИЛИ») |
|
10 |
| (поразрядная дизъюнкция «ИЛИ») |
|
11 |
&& (конъюнкция «И») |
|
12 |
|| (дизъюнкция «ИЛИ») |
|
13 |
?: (условная операция) |
|
14 |
= *= /= %= += – = &= ^= |= <<= >>= |
|
15 |
, (операция «запятая») |
|
Некоторые операции, присутствующие в таблице, пока не обсуждались.
Преобразование типов при вычислении выражений. Если в выражении появляются операнды различных типов, то они преобразуются к некоторому общему типу, при этом к каждому арифметическому операнду применяется такая последовательность правил:
Если один из операндов в выражении имеет тип long double, то остальные тоже преобразуются к типу long double.
В противном случае, если один из операндов в выражении имеет тип double, то остальные тоже преобразуются к типу double.
В противном случае, если один из операндов в выражении имеет тип float, то остальные тоже преобразуются к типу float.
В противном случае, если один из операндов в выражении имеет тип unsigned long, то остальные тоже преобразуются к типу unsigned long.
В противном случае, если один из операндов в выражении имеет тип long, то остальные тоже преобразуются к типу long.
В противном случае, если один из операндов в выражении имеет тип unsigned, то остальные тоже преобразуются. к типу unsigned.
В противном случае все операнды преобразуются к типу int. При этом тип char преобразуется в int со знаком; тип unsigned char в int, у которого старший байт всегда нулевой; тип signed char в int, у которого в знаковый разряд передается знак из сhar; тип short в int (знаковый или беззнаковый).
Предположим, что вычислено значение некоторого выражения в правой части оператора присваивания. В левой части оператора присваивания записана некоторая переменная, причем ее тип отличается от типа результата в правой части. Здесь правила преобразования очень простые: значение справа от оператора присваивания преобразуется к типу переменной слева от оператора присваивания. Если размер результата в правой части больше размера операнда в левой части, то старшая часть этого результата будет потеряна.
Упражнения
Определить тип константы:
а) 315 б)-32.4 в)102408 г)3.7Е57 д)0315
е )0х24 ж)2.6Lз)70700Uи)’5’ к)’\121’
2.В программе объявлена переменная: int n=10; Определить результаты вычислений следующих выражений:
а)n++ б)++nв)n%2 г)n/3 д)n/3.
е)++n+5 ж)5+n++ з)(float)n/4 и)sizeof(n) к)sizeof(1.*n)
3. Координаты точки на плоскости заданы переменными X и Y. Записать следующие условия в форме логических выражений:
а) точка лежит в первой четверти координатной плоскости;
б) точка лежит на оси Х;
в) точка лежит на одной из осей;
г) точка лежит в 1-й или 2-й четверти внутри единичной окружности;
д) точка лежит на единичной окружности в 3-й или 4-й четверти;
е) точка лежит внутри кольца с внутренним радиусом 1 и внешним радиусом 2 во 2-й или 4-й четверти.
4. В программе объявлена переменная: float x=2.; Какое значение получит переменная x в результате вычисления следующих выражений:
а)x+=2 б)x/=10 в)x*=(x+1) г)x+=x+=x+=1
5. Определить значения выражений для трех вариантов объявления переменной x: 1) float x=1.; 2) float x=10.; 3) int x=1:
а) x>1?2*x:x б) x/5==2?5:x/10 в)x>0&&x<=1?1:0