Лекции по проге / 02_Операции и выражения (1)
.pdf
Задание
Определите значение переменной x
int a = 0; int b = 5; int x = 2;
x = 4 - (++a) + (float)b/x;
31
|
Явные и неявные приведения типов |
||||
x = 4 |
- (++a) + |
(float)b / x; |
операция |
||
2 |
4 |
0 |
5 |
2 |
неявное |
|
|
|
|
|
|
|
|
1 |
5.0 |
|
приведение |
|
|
2.0 |
типа |
||
|
|
|
|
|
|
|
|
a:1 |
|
2.5 |
операнд |
|
|
|
5.5 |
||
|
|
3 |
|
||
|
|
|
|
||
|
|
|
|
|
возвращаемое |
|
|
3.0 |
|
|
значение операции |
|
|
|
|
|
|
|
|
5.5 |
|
|
a:1 |
|
|
5 |
|
|
побочный |
32 |
5 |
x:5 |
|
|
эффект |
|
|
операции |
|||
Это надо помнить!
Простейший оператор языка Си состоит из выражения, заканчивающегося точкой с запятой
Некоторые операции могут изменять свои операнды
Деление целых чисел всегда дает в результате целое число
33
Ошибки при компиляции для VS 2008 Russian
Невозможно преобразовать '<тип 1>' в '<тип 2>'
- вы пытаетесь использовать операцию с неподходящими типами данных (тип 1 использовали вы, в то время как надо было использовать тип 2)
'=': левый операнд должен быть левосторонним значением — слева от операции присваивания стоит что-то, чему нельзя присваивать (не l-value-выраже- ние)
Для '++' требуется левостороннее значение —
операция ++ (--) должна выполняться только над тем, 34 что можно изменить (l-value-выражение)
Ошибки при компиляции для VS 2005 English
can not convert '<тип 1>' to '<тип 2>' - вы пытаетесь использовать операцию с неподходящими типами данных (тип 1 использовали вы, в то время как надо было использовать тип 2)
'=': left operand must be l-value — слева от операции присваивания стоит что-то, чему нельзя присваивать (не l-value-выражение)
'++' needs l-value — операция ++ (--) должна выполняться только над тем, что можно изменить (l-
35 value-выражение)
