← Все темы  ·  ⬇ Материалы

🧮 Выражения 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/0cout<<(5>2)1
(int)x / int(x) отбрасывает дробь; pow(a,b) → doubleint(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. Помни про целочисленное деление и что % только для целых.