AP CSA Unit-Level MCQ
Primitive Expressions
Practice mode with 15 Java-focused questions, immediate answer checks, and explanations.
What primitive expressions covers
Primitive expressions are where every AP CSA program starts. Java evaluates arithmetic using the types of the operands, not the type of the variable you are assigning into, so int / int stays an int and double arithmetic keeps its decimal part. Precedence follows the usual order: multiplication, division, and mod before addition and subtraction, with parentheses overriding everything. Compound assignment operators such as += and *= apply the operation and reassign in one step.
Where students lose points
The most common error is assuming the assignment target changes the arithmetic. In double average = 7 / 2; the division happens first in int arithmetic, so average holds 3.0, not 3.5. Students also lose points on compound assignment with mixed types, and on chained operations where they add left to right instead of respecting precedence.
How it shows up on the AP exam
This is Unit 1 material and it appears everywhere, because almost every code-tracing question contains an expression you must evaluate correctly before the rest of the trace can be right. Getting expressions wrong compounds through an entire FRQ.
For practice use only.
Primitive Expressions MCQ Practice
Practice AP CSA primitive expressions: int and double arithmetic, operator precedence, compound assignment, and the integer overflow traps that appear on the exam.
Answered 0 of 15
Choose one answer.
Code Tracing 01 - Primitive Expressions: track the final printed value.
int a = 18;
int b = 3;
int c = 5;
int d = 2;
System.out.print(a + b * c - d);All 15 primitive expressions questions
Work through the interactive quiz above first. This is the full primitive expressions question set with worked solutions, so students can review any question after attempting it.
1.Code Tracing 01 - Primitive Expressions: track the final printed value.
int a = 18; int b = 3; int c = 5; int d = 2; System.out.print(a + b * c - d);- 27
- 24
- 31
- 103
Show worked solution
Correct answer: 31
Multiplication is evaluated before the left-to-right addition and subtraction.
2.Code Tracing 12 - Primitive Expressions: follow the variable updates.
int score = 26; int scale = 7; score++; scale -= 1; System.out.print(score * scale);- 182
- 189
- 156
- 162
Show worked solution
Correct answer: 162
The increment and compound assignment both update their variables before the multiplication.
3.Code Tracing 28 - Primitive Expressions: trace the branch and loop path.
int a = 38; int b = 3; int c = 10; int d = 3; int result = a % b * c + d; System.out.print(result);- 11
- 26
- 38
- 23
Show worked solution
Correct answer: 23
% and * have the same precedence and are evaluated left to right before addition.
4.Code Tracing 39 - Primitive Expressions: watch the index changes.
int result = 46; int b = 5; int c = 5; int d = 5; result -= (b + c) * d; System.out.print(result);- -4
- 66
- 230
- 31
Show worked solution
Correct answer: -4
The right side is grouped and multiplied before the compound subtraction updates result.
5.Code Tracing 40 - Primitive Expressions: evaluate the state change step by step.
int a = 46; int b = 5; int c = 5; int d = 5; int result = (a + b) / (c - d); System.out.print(result);- 42
- 5
- 0
- A runtime exception is thrown.
Show worked solution
Correct answer: A runtime exception is thrown.
The grouped denominator c - d is 0. Integer division by zero throws an ArithmeticException in Java.
6.What is printed by the following code segment?
int a = 9; int b = 4; double c = a / b + (double) a / b; System.out.print(c);- 4.5
- 4.25
- 2.0
- 4.0
Show worked solution
Correct answer: 4.25
The first division is int arithmetic and truncates to 2. The second casts first, giving 2.25. Their sum is 4.25.
7.What is printed by the following code segment?
int n = 7; n += n / 2; n *= 2; n -= n % 5; System.out.print(n);- 18
- 15
- 20
- 22
Show worked solution
Correct answer: 20
n becomes 7 + 3, or 10, then 20, and 20 % 5 is 0 so nothing is subtracted.
8.What is printed by the following code segment?
int x = 5; int y = x++ + 2; int z = ++x + 2; System.out.print(x + " " + y + " " + z);- 7 8 9
- 6 7 8
- 7 7 8
- 7 7 9
Show worked solution
Correct answer: 7 7 9
The postfix form uses 5 then raises x to 6, so y is 7. The prefix form raises x to 7 first, so z is 9.
9.What is printed by the following code segment?
double d = 5; int i = (int) (d / 2) + (int) d / 2; System.out.print(i);- 4
- 5
- 2
- 6
Show worked solution
Correct answer: 4
The first cast truncates 2.5 to 2. The second casts d to 5 and then divides in int arithmetic, giving 2. Their sum is 4.
10.What is printed by the following code segment?
int p = 17; int r = p % 10 * 10 + p / 10; System.out.print(r);- 17
- 71
- 77
- 11
Show worked solution
Correct answer: 71
The modulus and division share precedence with multiplication and run left to right, so this swaps the two digits.
11.What is printed by the following code segment?
int a = 3; int b = a * a - a / a + a % a; System.out.print(b);- 9
- 7
- 8
- 11
Show worked solution
Correct answer: 8
Multiplication, division, and modulus all bind tighter than the additive operators, giving 9 - 1 + 0.
12.What is printed by the following code segment?
double total = 10; total /= 4; total *= 4; System.out.print(total);- 8.0
- 10
- 2.5
- 10.0
Show worked solution
Correct answer: 10.0
total is a double, so the division keeps 2.5 and multiplying returns exactly 10.0. An int variable would have given 8.
13.What is printed by the following code segment?
int total = 10; total /= 4; total *= 4; System.out.print(total);- 8
- 10
- 2
- 12
Show worked solution
Correct answer: 8
Integer division truncates 2.5 to 2, and the information is gone, so multiplying back gives 8 rather than 10.
14.What is printed by the following code segment?
int v = -9; System.out.print(v / 2 + " " + v % 2 + " " + Math.abs(v % 2));- -5 1 1
- -4 -1 1
- -4 1 1
- -5 -1 1
Show worked solution
Correct answer: -4 -1 1
Division truncates toward zero and the remainder follows the sign of the dividend, so the parts are -4 and -1.
15.What is printed by the following code segment?
int a = 2; int b = 3; System.out.print(a + b + "" + a + b);- 2323
- 55
- 523
- 23
Show worked solution
Correct answer: 523
The first two operands are added because both are int. Once the empty string appears, everything after it concatenates.
