← Все темы ·
⬇ Материалы
🧮 Выражения C++: тип, значение, порядок
📌 Эта страница — только C++ (Pascal убран, чтобы не путаться). На экзамене на 1-й странице отметь язык C/C++. Задание есть в 2022, 2024 и 2025.
1. Что спрашивают (3 подтипа)
а) Порядок операций — пронумеровать «кассеты» в порядке выполнения операций.
b) Тип выражения — int, double или bool.
c) Значение выражения — посчитать результат, подставив значения переменных.
Иногда вместо этого — правильность операторов (Верно/Неверно): скомпилируется ли строка.
2. Приоритет операций C++ (учебник 10 кл., §3.3, табл. 3.2)
Считаем
изнутри наружу: сначала скобки, потом по приоритету сверху вниз. Одинаковый приоритет → слева направо.
| Приоритет | Операции C++ |
| 1 (высший) | унарные: ! - + ++ -- |
| 2 | * / % |
| 3 | + - |
| 4 | < <= > >= |
| 5 | == != |
| 6 | && |
| 7 (низший) | || |
Подтип «а) кассеты»: проставь номера 1,2,3… над операциями в этом порядке. Если внутри скобок несколько операций — сначала более приоритетные.
3. Правила типов C++ — выучить наизусть
| Правило | Пример |
| Деление двух целых → целое (дробь отбрасывается) | 2/6 = 0; -7/3 = -2 |
| Если есть double/float → деление с дробью | 5/1.5 = 3.333 |
% (остаток) — только целые; с float → ошибка | 16 % 5 = 1; p % 10 при float p → ошибка |
| char в выражении = код символа | '0'=48, '9'=57, '2'=50, 'A'=65, 'a'=97 |
| enum{a,b,c,d} → a=0, b=1, c=2, d=3 (ведёт себя как int) | joi в {luni,marti,miercuri,joi} = 3 |
bool: true=1, false=0; cout печатает 1/0 | cout<<(5>2) → 1 |
(int)x / int(x) отбрасывает дробь; pow(a,b) → double | int(7.87)=7; pow(2,2)=4.0 |
Как определить ТИП результата
только целые (int, char, enum, bool, %, целое /) → int
участвует double / float → double
сравнение (< > == !=) или логика (! && ||) → bool
4. ✍️ Все задания с экзаменов (C++) — с проверкой по барему
Все значения проверены компилятором и совпадают с официальным баремом.
2024, вариант 2 — значение и тип 4 выражений
enum {luni,marti,miercuri,joi} zi=joi; int a=2,b=4; float x=7.87,y=4; char c='9',d='2';
► решение
┌─ Выражение ──────────────────────┬ Значение ┬ Тип ─┐
(a*zi > b) && (b != x) true (→1) bool
zi=joi=3 → a*zi=6 → 6>4=true; 4!=7.87=true; true&&true
b*int(x) - int(pow(a,2)) 24 int
int(7.87)=7 → b*7=28; pow(2,2)=4 → int=4; 28-4=24
(d - c) / 3 -2 int
d='2'=50, c='9'=57 → 50-57=-7; -7/3=-2 (целочисл.)
sqrt(9*y) + 2*miercuri 10 double
9*4=36 → sqrt=6.0; miercuri=2 → 2*2=4; 6+4=10
b) лишний оператор: && (логический; +, %, - — арифметические)
2025, вариант 2 — правильность + вывод
enum vv {a,b,c,d}; vv v,q,w; bool x; float p;
a) Верно или Неверно для каждого оператора:
► решение
v = b; Верно (enum-константа b → переменной enum)
cin >> q; Неверно (нет оператора ввода >> для enum)
q = v; Верно (enum → enum)
x = v == q; Верно (v==q даёт bool → переменной x типа bool)
cout << p % 10; Неверно (% с float p — ошибка, только целые)
p = x + 25; Верно (bool→0/1, +25 = int, кладём в float)
b) w=c (=2); x = (5>2) = true (=1)
y = (d > w): d=3 > w=2 → true → cout печатает 1 ⇒ y = 1
s = pow(x + 3*w, 2) = pow(1 + 6, 2) = pow(7,2) = 49 ⇒ s = 49
2022 — порядок, тип, значение
int a=5, c=16; bool b=true; выражение: (c % a != 3) && (! b || (3 + 2 * a > c))
► решение
a) порядок (один из верных): % → != → (внутри правой скобки) 2*a → 3+.. → > → ! → || → &&
b) тип: bool
c) значение:
c % a = 16 % 5 = 1; 1 != 3 → true
!b = false; 3 + 2*a = 13; 13 > 16 → false
false || false = false
true && false = false
2024, вариант 1 — порядок, тип, значение
int a=47; double x=80; выражение задано изображением (кассеты для порядка).
► ответ по барему
b) тип: double (в выражении участвует x типа double)
c) значение: 70 (или 70.0)
а) проставить порядок операций по приоритету (скобки → * / % → + - → отношения)
5. 🎯 Потренируйся (C++)
1. int a=3; double y=2; a / 2 + y — значение и тип?
показатьa/2 = 3/2 = 1 (целочисл.!); 1 + 2.0 = 3.0 → значение 3, тип double
2. 17 % 5 и 17 / 5 (оба int)?
показать17 % 5 = 2; 17 / 5 = 3; тип int
3. char c='A', d='D'; d - c — значение и тип?
показать'D'=68, 'A'=65 → 68-65 = 3, тип int (разность кодов)
4. bool b = (4 < 3); b + 10 — значение и тип?
показатьb = false = 0; 0 + 10 = 10, тип int
5. enum{mon,tue,wed,thu,fri}; fri - mon ?
показатьfri=4, mon=0 → 4-0 = 4, тип int
6. (5 > 2) && (3 == 3) — значение и тип?
показатьtrue && true = true (печатается 1), тип bool
7. Что выведет cout << 2 + 3 * 4 - 10 / 2; ?
показать3*4=12, 10/2=5 (сначала * и /); 2+12-5 = 9
8. Правильно ли: float p=1.5; cout << p % 2; ?
показатьНеверно — % нельзя применять к float (только к целым)
💡 Алгоритм на экзамене: (1) подставь значения переменных; (2) считай по приоритету изнутри наружу; (3) тип определи по правилу — только целые → int, есть double → double, сравнение/логика → bool. Помни про целочисленное деление и что % только для целых.